From 29e2375e3bf6cfdae9205093b2992870a31ac003 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Tue, 21 Jun 2016 14:20:30 +0100 Subject: [PATCH] Add constructor for opening connection to socket. --- src/backends/redis/command.cpp | 17 ++++++++++++++++- src/backends/redis/command.hpp | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/backends/redis/command.cpp b/src/backends/redis/command.cpp index 564aa73..3c04b46 100644 --- a/src/backends/redis/command.cpp +++ b/src/backends/redis/command.cpp @@ -50,13 +50,24 @@ namespace redis { { } + Command::Command (std::string&& parSocket) : + m_conn(nullptr, &redisAsyncDisconnect), + m_address(std::move(parSocket), + m_port(0) + { + } + Command::~Command() noexcept { } void Command::connect() { if (not m_conn) { RedisConnection conn( - redisAsyncConnect(m_address.c_str(), m_port), + (is_socket_connection() ? + redisAsyncConnectUnix(m_address.c_str()) + : + redisAsyncConnect(m_address.c_str(), m_port) + ), &redisAsyncDisconnect ); if (not conn) { @@ -155,4 +166,8 @@ namespace redis { return boost::string_ref(it_inserted->second.data(), it_inserted->second.size()); } #endif + + bool Command::is_socket_connection() const { + return not (m_port or m_address.empty()); + } } //namespace redis diff --git a/src/backends/redis/command.hpp b/src/backends/redis/command.hpp index c99df18..3765ad8 100644 --- a/src/backends/redis/command.hpp +++ b/src/backends/redis/command.hpp @@ -55,6 +55,7 @@ namespace redis { typedef boost::iterator_range zscan_range; Command ( std::string&& parAddress, uint16_t parPort ); + explicit Command ( std::string&& parSocket ); ~Command ( void ) noexcept; void connect ( void ); @@ -80,6 +81,7 @@ namespace redis { using Sha1Array = std::array; boost::string_ref add_lua_script_ifn ( const std::string& parScript ); + bool is_socket_connection ( void ) const; RedisConnection m_conn; #if defined(WITH_CRYPTOPP)