43 lines
690 B
C++
43 lines
690 B
C++
#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)
|
|
{
|
|
if (m_cancel) {
|
|
PQfreeCancel(m_cancel);
|
|
}
|
|
m_cancel = rhs.m_cancel;
|
|
rhs.m_cancel = nullptr;
|
|
return *this;
|
|
}
|
|
|
|
Canceller::~Canceller()
|
|
{
|
|
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);
|
|
if (!res && error) {
|
|
*error = errbuf;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
}
|