pgLab/pgsql/Pgsql_Canceller.cpp

42 lines
697 B
C++
Raw Normal View History

#include "Pgsql_Canceller.h"
namespace Pgsql {
Canceller::Canceller(PGcancel *c)
: m_cancel(c)
{}
Canceller::Canceller(Canceller&& rhs)
: m_cancel(rhs.m_cancel)
{
rhs.m_cancel = nullptr;
}
Canceller& Canceller::operator=(Canceller&& rhs)
{
2022-05-26 08:25:31 +02:00
if (m_cancel)
PQfreeCancel(m_cancel);
2022-05-26 08:25:31 +02:00
m_cancel = rhs.m_cancel;
rhs.m_cancel = nullptr;
return *this;
}
Canceller::~Canceller()
{
2022-05-26 08:25:31 +02:00
if (m_cancel)
PQfreeCancel(m_cancel);
}
bool Canceller::cancel(std::string *error)
{
const int errbuf_size = 256;
char errbuf[errbuf_size];
bool res = PQcancel(m_cancel, errbuf, errbuf_size);
2022-05-26 08:25:31 +02:00
if (!res && error)
*error = errbuf;
return res;
}
}