mirror of
https://github.com/KingDuckZ/dindexer.git
synced 2025-07-03 14:14:11 +00:00
Allow sock connections to redis.
This commit is contained in:
parent
106b72bf0e
commit
59eff8ff56
2 changed files with 42 additions and 9 deletions
|
@ -41,6 +41,7 @@ namespace dindb {
|
||||||
std::string address;
|
std::string address;
|
||||||
uint16_t port;
|
uint16_t port;
|
||||||
uint16_t database;
|
uint16_t database;
|
||||||
|
bool sock_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string read_script (const dincore::SearchPaths& parSearch, const char* parName) {
|
std::string read_script (const dincore::SearchPaths& parSearch, const char* parName) {
|
||||||
|
@ -70,20 +71,31 @@ namespace YAML {
|
||||||
node["address"] = parSettings.address;
|
node["address"] = parSettings.address;
|
||||||
node["port"] = parSettings.port;
|
node["port"] = parSettings.port;
|
||||||
node["database"] = parSettings.database;
|
node["database"] = parSettings.database;
|
||||||
|
node["sock_mode"] = parSettings.sock_mode;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool decode (const Node& parNode, dindb::RedisConnectionSettings& parSettings) {
|
static bool decode (const Node& parNode, dindb::RedisConnectionSettings& parSettings) {
|
||||||
if (not parNode.IsMap() or parNode.size() != 2) {
|
if (not parNode.IsMap() or parNode.size() < 2) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parNode["sock_mode"])
|
||||||
|
parSettings.sock_mode = parNode["sock_mode"].as<bool>();
|
||||||
|
else
|
||||||
|
parSettings.sock_mode = false;
|
||||||
|
|
||||||
parSettings.address = parNode["address"].as<std::string>();
|
parSettings.address = parNode["address"].as<std::string>();
|
||||||
|
if (parNode["port"])
|
||||||
parSettings.port = parNode["port"].as<uint16_t>();
|
parSettings.port = parNode["port"].as<uint16_t>();
|
||||||
|
else
|
||||||
|
parSettings.port = 6379;
|
||||||
|
|
||||||
if (parNode["database"])
|
if (parNode["database"])
|
||||||
parSettings.database = parNode["database"].as<uint16_t>();
|
parSettings.database = parNode["database"].as<uint16_t>();
|
||||||
else
|
else
|
||||||
parSettings.database = 0;
|
parSettings.database = 0;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -100,6 +112,16 @@ namespace dindb {
|
||||||
this->connect();
|
this->connect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BackendRedis::BackendRedis(std::string&& parPath, uint16_t parDatabase, bool parConnect, dincore::SearchPaths&& parLuaPaths) :
|
||||||
|
m_redis(std::move(parPath)),
|
||||||
|
m_tag_if_in_set(),
|
||||||
|
m_lua_script_paths(std::move(parLuaPaths)),
|
||||||
|
m_database(parDatabase)
|
||||||
|
{
|
||||||
|
if (parConnect)
|
||||||
|
this->connect();
|
||||||
|
}
|
||||||
|
|
||||||
BackendRedis::~BackendRedis() noexcept {
|
BackendRedis::~BackendRedis() noexcept {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,6 +321,15 @@ extern "C" dindb::Backend* dindexer_create_backend (const YAML::Node* parConfig)
|
||||||
dincore::SearchPaths lua_paths(std::move(vec));
|
dincore::SearchPaths lua_paths(std::move(vec));
|
||||||
lua_paths.add_path(REDIS_SCRIPTS_PATH);
|
lua_paths.add_path(REDIS_SCRIPTS_PATH);
|
||||||
|
|
||||||
|
if (config.sock_mode) {
|
||||||
|
return new dindb::BackendRedis(
|
||||||
|
std::move(config.address),
|
||||||
|
config.database,
|
||||||
|
true,
|
||||||
|
std::move(lua_paths)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
return new dindb::BackendRedis(
|
return new dindb::BackendRedis(
|
||||||
std::move(config.address),
|
std::move(config.address),
|
||||||
config.port,
|
config.port,
|
||||||
|
@ -307,6 +338,7 @@ extern "C" dindb::Backend* dindexer_create_backend (const YAML::Node* parConfig)
|
||||||
std::move(lua_paths)
|
std::move(lua_paths)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" void dindexer_destroy_backend (dindb::Backend* parDele) {
|
extern "C" void dindexer_destroy_backend (dindb::Backend* parDele) {
|
||||||
if (parDele)
|
if (parDele)
|
||||||
|
|
|
@ -30,6 +30,7 @@ namespace dindb {
|
||||||
public:
|
public:
|
||||||
BackendRedis ( BackendRedis&& ) = default;
|
BackendRedis ( BackendRedis&& ) = default;
|
||||||
BackendRedis ( std::string&& parAddress, uint16_t parPort, uint16_t parDatabase, bool parConnect, dincore::SearchPaths&& parLuaPaths );
|
BackendRedis ( std::string&& parAddress, uint16_t parPort, uint16_t parDatabase, bool parConnect, dincore::SearchPaths&& parLuaPaths );
|
||||||
|
BackendRedis ( std::string&& parPath, uint16_t parDatabase, bool parConnect, dincore::SearchPaths&& parLuaPaths );
|
||||||
virtual ~BackendRedis ( void ) noexcept;
|
virtual ~BackendRedis ( void ) noexcept;
|
||||||
|
|
||||||
virtual void connect ( void ) override;
|
virtual void connect ( void ) override;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue