From: Aki Tuomi Date: Sun, 2 Jun 2013 15:45:57 +0000 (+0300) Subject: Added transaction ID for start/abort/commiTransaction X-Git-Tag: rec-3.6.0-rc1~698^2^2~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=428ed431bc1dafafecb449508d8f2ec000ee8ffd;p=pdns Added transaction ID for start/abort/commiTransaction --- diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index af8da6efa..c6b58bc1c 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -52,6 +52,7 @@ RemoteBackend::RemoteBackend(const std::string &suffix) build(getArg("connection-string")); this->d_dnssec = mustDo("dnssec"); this->d_index = -1; + this->d_trxid = 0; } RemoteBackend::~RemoteBackend() { @@ -670,22 +671,35 @@ bool RemoteBackend::feedEnts3(int domain_id, const string &domain, set & bool RemoteBackend::startTransaction(const string &domain, int domain_id) { rapidjson::Document query,answer; rapidjson::Value parameters; + this->d_trxid = time((time_t*)NULL); + query.SetObject(); JSON_ADD_MEMBER(query, "method", "startTransaction", query.GetAllocator()); parameters.SetObject(); JSON_ADD_MEMBER(parameters, "domain", domain.c_str(), query.GetAllocator()); JSON_ADD_MEMBER(parameters, "domain_id", domain_id, query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "trxid", d_trxid, query.GetAllocator()); + query.AddMember("parameters", parameters, query.GetAllocator()); - if (connector->send(query) == false || connector->recv(answer) == false) + if (connector->send(query) == false || connector->recv(answer) == false) { + d_trxid = -1; return false; + } return true; } bool RemoteBackend::commitTransaction() { rapidjson::Document query,answer; + rapidjson::Value parameters; + query.SetObject(); JSON_ADD_MEMBER(query, "method", "abortTransaction", query.GetAllocator()); + parameters.SetObject(); + JSON_ADD_MEMBER(parameters, "trxid", d_trxid, query.GetAllocator()); + query.AddMember("parameters", parameters, query.GetAllocator()); + + d_trxid = -1; if (connector->send(query) == false || connector->recv(answer) == false) return false; return true; @@ -693,8 +707,15 @@ bool RemoteBackend::commitTransaction() { bool RemoteBackend::abortTransaction() { rapidjson::Document query,answer; + rapidjson::Value parameters; + query.SetObject(); JSON_ADD_MEMBER(query, "method", "commitTransaction", query.GetAllocator()); + parameters.SetObject(); + JSON_ADD_MEMBER(parameters, "trxid", d_trxid, query.GetAllocator()); + query.AddMember("parameters", parameters, query.GetAllocator()); + + d_trxid = -1; if (connector->send(query) == false || connector->recv(answer) == false) return false; return true; diff --git a/modules/remotebackend/remotebackend.hh b/modules/remotebackend/remotebackend.hh index 7f8e10390..8984aa089 100644 --- a/modules/remotebackend/remotebackend.hh +++ b/modules/remotebackend/remotebackend.hh @@ -129,6 +129,7 @@ class RemoteBackend : public DNSBackend Connector *connector; bool d_dnssec; rapidjson::Document *d_result; - int d_index; + int d_index; + time_t d_trxid; }; #endif