|
@@ -74,13 +74,14 @@ std::string join(const std::vector<std::string> &elements, const char * const se
|
|
|
|
|
|
using namespace ZeroTier;
|
|
|
|
|
|
-PostgreSQL::PostgreSQL(EmbeddedNetworkController *const nc, const Identity &myId, const char *path, int listenPort)
|
|
|
+PostgreSQL::PostgreSQL(EmbeddedNetworkController *const nc, const Identity &myId, const char *path, int listenPort, mq_config *mqc)
|
|
|
: DB(nc, myId, path)
|
|
|
, _ready(0)
|
|
|
, _connected(1)
|
|
|
, _run(1)
|
|
|
, _waitNoticePrinted(false)
|
|
|
, _listenPort(listenPort)
|
|
|
+ , _mqc(mqc)
|
|
|
{
|
|
|
_connString = std::string(path) + " application_name=controller_" +_myAddressStr;
|
|
|
|
|
@@ -601,6 +602,21 @@ void PostgreSQL::membersDbWatcher()
|
|
|
|
|
|
PQclear(res); res = NULL;
|
|
|
|
|
|
+ if (this->_mqc != NULL) {
|
|
|
+ _membersWatcher_RabbitMQ();
|
|
|
+ } else {
|
|
|
+ _membersWatcher_Postgres(conn);
|
|
|
+ PQfinish(conn);
|
|
|
+ conn = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (_run == 1) {
|
|
|
+ fprintf(stderr, "ERROR: %s membersDbWatcher should still be running! Exiting Controller.\n", _myAddressStr.c_str());
|
|
|
+ exit(9);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void PostgreSQL::_membersWatcher_Postgres(PGconn *conn) {
|
|
|
while(_run == 1) {
|
|
|
if (PQstatus(conn) != CONNECTION_OK) {
|
|
|
fprintf(stderr, "ERROR: Member Watcher lost connection to Postgres.");
|
|
@@ -627,12 +643,10 @@ void PostgreSQL::membersDbWatcher()
|
|
|
}
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
|
|
}
|
|
|
- PQfinish(conn);
|
|
|
- conn = NULL;
|
|
|
- if (_run == 1) {
|
|
|
- fprintf(stderr, "ERROR: %s membersDbWatcher should still be running! Exiting Controller.\n", _myAddressStr.c_str());
|
|
|
- exit(9);
|
|
|
- }
|
|
|
+}
|
|
|
+
|
|
|
+void PostgreSQL::_membersWatcher_RabbitMQ() {
|
|
|
+
|
|
|
}
|
|
|
|
|
|
void PostgreSQL::networksDbWatcher()
|
|
@@ -658,6 +672,21 @@ void PostgreSQL::networksDbWatcher()
|
|
|
|
|
|
PQclear(res); res = NULL;
|
|
|
|
|
|
+ if (this->_mqc != NULL) {
|
|
|
+ _networksWatcher_RabbitMQ();
|
|
|
+ } else {
|
|
|
+ _networksWatcher_Postgres(conn);
|
|
|
+ PQfinish(conn);
|
|
|
+ conn = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (_run == 1) {
|
|
|
+ fprintf(stderr, "ERROR: %s networksDbWatcher should still be running! Exiting Controller.\n", _myAddressStr.c_str());
|
|
|
+ exit(8);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void PostgreSQL::_networksWatcher_Postgres(PGconn *conn) {
|
|
|
while(_run == 1) {
|
|
|
if (PQstatus(conn) != CONNECTION_OK) {
|
|
|
fprintf(stderr, "ERROR: Network Watcher lost connection to Postgres.");
|
|
@@ -682,12 +711,10 @@ void PostgreSQL::networksDbWatcher()
|
|
|
}
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
|
|
}
|
|
|
- PQfinish(conn);
|
|
|
- conn = NULL;
|
|
|
- if (_run == 1) {
|
|
|
- fprintf(stderr, "ERROR: %s networksDbWatcher should still be running! Exiting Controller.\n", _myAddressStr.c_str());
|
|
|
- exit(8);
|
|
|
- }
|
|
|
+}
|
|
|
+
|
|
|
+void PostgreSQL::_networksWatcher_RabbitMQ() {
|
|
|
+
|
|
|
}
|
|
|
|
|
|
void PostgreSQL::commitThread()
|