in common/dbconnector.h [135:228]
def get_ns_list():
return SonicDBConfig.getNamespaces()
%}
#endif
static std::vector<std::string> getDbList(const std::string &netns = EMPTY_NAMESPACE, const std::string &containerName=EMPTY_CONTAINERNAME);
static std::vector<std::string> getDbList(const SonicDBKey &key);
static bool isInit() { return m_init; };
static bool isGlobalInit() { return m_global_init; };
static std::map<std::string, RedisInstInfo> getInstanceList(const std::string &netns = EMPTY_NAMESPACE, const std::string &containerName=EMPTY_CONTAINERNAME);
static std::map<std::string, RedisInstInfo> getInstanceList(const SonicDBKey &key);
private:
static std::recursive_mutex m_db_info_mutex;
// { {containerName, namespace}, { instName, { unix_socket_path, hostname, port } } }
static std::unordered_map<SonicDBKey, std::map<std::string, RedisInstInfo>, SonicDBKeyHash> m_inst_info;
// { {containerName, namespace}, { dbName, {instName, dbId, separator} } }
static std::unordered_map<SonicDBKey, std::unordered_map<std::string, SonicDBInfo>, SonicDBKeyHash> m_db_info;
// { {containerName, namespace}, { dbId, separator } }
static std::unordered_map<SonicDBKey, std::unordered_map<int, std::string>, SonicDBKeyHash> m_db_separator;
static bool m_init;
static bool m_global_init;
static void parseDatabaseConfig(const std::string &file,
std::map<std::string, RedisInstInfo> &inst_entry,
std::unordered_map<std::string, SonicDBInfo> &db_entry,
std::unordered_map<int, std::string> &separator_entry);
static RedisInstInfo& getRedisInfo(const std::string &dbName, const SonicDBKey &key);
static SonicDBInfo& getDbInfo(const std::string &dbName, const SonicDBKey &key);
};
class RedisContext
{
public:
static constexpr const char *DEFAULT_UNIXSOCKET = "/var/run/redis/redis.sock";
/*
* Connect to Redis DB wither with a hostname:port or unix socket
* Select the database index provided by "db"
*
* Timeout - The time in milisecond until exception is been thrown. For
* infinite wait, set this value to 0
*/
RedisContext(const RedisContext &other);
RedisContext& operator=(const RedisContext&) = delete;
~RedisContext();
redisContext *getContext() const;
/*
* Assign a name to the Redis client used for this connection
* This is helpful when debugging Redis clients using `redis-cli client list`
*/
void setClientName(const std::string& clientName);
std::string getClientName();
protected:
RedisContext();
void initContext(const char *host, int port, const timeval *tv);
void initContext(const char *path, const timeval *tv);
void setContext(redisContext *ctx);
private:
redisContext *m_conn;
};
class DBConnector : public RedisContext
{
public:
static constexpr const char *DEFAULT_UNIXSOCKET = "/var/run/redis/redis.sock";
/*
* Connect to Redis DB wither with a hostname:port or unix socket
* Select the database index provided by "db"
*
* Timeout - The time in milisecond until exception is been thrown. For
* infinite wait, set this value to 0
*/
explicit DBConnector(const DBConnector &other);
DBConnector(int dbId, const RedisContext &ctx);
DBConnector(int dbId, const std::string &hostname, int port, unsigned int timeout_ms);
DBConnector(int dbId, const std::string &unixPath, unsigned int timeout_ms);
DBConnector(const std::string &dbName, unsigned int timeout_ms, bool isTcpConn = false);
DBConnector(const std::string &dbName, unsigned int timeout_ms, bool isTcpConn, const std::string &netns);
DBConnector(const std::string &dbName, unsigned int timeout_ms, bool isTcpConn, const SonicDBKey &key);
DBConnector& operator=(const DBConnector&) = delete;
int getDbId() const;
std::string getDbName() const;
std::string getNamespace() const;
#if defined(SWIG) && defined(SWIGPYTHON)
%pythoncode %{