add original hiredis

This commit is contained in:
Grant Limberg 2020-05-11 15:03:56 -07:00
commit 154470b570
No known key found for this signature in database
GPG key ID: 2BA62CCABBB4095A
50 changed files with 8952 additions and 13 deletions

View file

@ -456,14 +456,15 @@ static bool _parseRule(json &r,ZT_VirtualNetworkRule &rule)
} // anonymous namespace
EmbeddedNetworkController::EmbeddedNetworkController(Node *node,const char *ztPath,const char *dbPath, int listenPort) :
EmbeddedNetworkController::EmbeddedNetworkController(Node *node,const char *ztPath,const char *dbPath, int listenPort, RedisConfig *rc) :
_startTime(OSUtils::now()),
_listenPort(listenPort),
_node(node),
_ztPath(ztPath),
_path(dbPath),
_sender((NetworkController::Sender *)0),
_db(this)
_db(this),
_rc(rc)
{
}
@ -484,7 +485,7 @@ void EmbeddedNetworkController::init(const Identity &signingId,Sender *sender)
#ifdef ZT_CONTROLLER_USE_LIBPQ
if ((_path.length() > 9)&&(_path.substr(0,9) == "postgres:")) {
_db.addDB(std::shared_ptr<DB>(new PostgreSQL(_signingId,_path.substr(9).c_str(), _listenPort)));
_db.addDB(std::shared_ptr<DB>(new PostgreSQL(_signingId,_path.substr(9).c_str(), _listenPort, _rc)));
} else {
#endif
_db.addDB(std::shared_ptr<DB>(new FileDB(_path.c_str())));

View file

@ -43,6 +43,7 @@
namespace ZeroTier {
class Node;
struct RedisConfig;
class EmbeddedNetworkController : public NetworkController,public DB::ChangeListener
{
@ -51,7 +52,7 @@ public:
* @param node Parent node
* @param dbPath Database path (file path or database credentials)
*/
EmbeddedNetworkController(Node *node,const char *ztPath,const char *dbPath, int listenPort);
EmbeddedNetworkController(Node *node,const char *ztPath,const char *dbPath, int listenPort, RedisConfig *rc);
virtual ~EmbeddedNetworkController();
virtual void init(const Identity &signingId,Sender *sender);
@ -148,6 +149,8 @@ private:
std::unordered_map< _MemberStatusKey,_MemberStatus,_MemberStatusHash > _memberStatus;
std::mutex _memberStatus_l;
RedisConfig *_rc;
};
} // namespace ZeroTier

View file

@ -18,7 +18,7 @@
#include "../node/Constants.hpp"
#include "EmbeddedNetworkController.hpp"
#include "../version.h"
#include "hiredis.h"
#include "Redis.hpp"
#include <libpq-fe.h>
#include <sstream>
@ -68,7 +68,7 @@ std::string join(const std::vector<std::string> &elements, const char * const se
using namespace ZeroTier;
PostgreSQL::PostgreSQL(const Identity &myId, const char *path, int listenPort)
PostgreSQL::PostgreSQL(const Identity &myId, const char *path, int listenPort, RedisConfig *rc)
: DB()
, _myId(myId)
, _myAddress(myId.address())
@ -77,6 +77,7 @@ PostgreSQL::PostgreSQL(const Identity &myId, const char *path, int listenPort)
, _run(1)
, _waitNoticePrinted(false)
, _listenPort(listenPort)
, _rc(rc)
{
char myAddress[64];
_myAddressStr = myId.address().toString(myAddress);
@ -717,10 +718,10 @@ void PostgreSQL::networksDbWatcher()
initializeNetworks(conn);
if (false) {
// PQfinish(conn);
// conn = NULL;
// _networksWatcher_RabbitMQ();
if (_rc) {
PQfinish(conn);
conn = NULL;
_networksWatcher_Redis();
} else {
_networksWatcher_Postgres(conn);
PQfinish(conn);

View file

@ -26,6 +26,8 @@ typedef struct pg_conn PGconn;
namespace ZeroTier {
struct RedisConfig;
/**
* A controller database driver that talks to PostgreSQL
*
@ -35,7 +37,7 @@ namespace ZeroTier {
class PostgreSQL : public DB
{
public:
PostgreSQL(const Identity &myId, const char *path, int listenPort);
PostgreSQL(const Identity &myId, const char *path, int listenPort, RedisConfig *rc);
virtual ~PostgreSQL();
virtual bool waitForReady();
@ -94,6 +96,8 @@ private:
mutable volatile bool _waitNoticePrinted;
int _listenPort;
RedisConfig *_rc;
};
} // namespace ZeroTier