28 #include <cpp_redis/misc/logger.hpp> 29 #include <cpp_redis/network/redis_connection.hpp> 30 #include <tacopie/network/io_service.hpp> 42 #ifndef __CPP_REDIS_USE_CUSTOM_TCP_CLIENT 52 explicit sentinel(
const std::shared_ptr<network::tcp_client_iface>& tcp_client);
77 sentinel&
send(
const std::vector<std::string>& sentinel_cmd,
const reply_callback_t& callback =
nullptr);
101 template <
class Rep,
class Period>
106 std::unique_lock<std::mutex> lock_callback(m_callbacks_mutex);
107 __CPP_REDIS_LOG(debug,
"cpp_redis::sentinel waiting for callbacks to complete");
108 if (!m_sync_condvar.wait_for(lock_callback, timeout, [=] {
109 return m_callbacks_running == 0 && m_callbacks.empty();
111 __CPP_REDIS_LOG(debug,
"cpp_redis::sentinel finished waiting for callback");
114 __CPP_REDIS_LOG(debug,
"cpp_redis::sentinel timed out waiting for callback");
140 void disconnect(
bool wait_for_removal =
false);
160 std::uint32_t timeout_msecs = 0,
161 const sentinel_disconnect_handler_t& disconnect_handler =
nullptr);
172 const std::string& host,
174 const sentinel_disconnect_handler_t& disconnect_handler =
nullptr,
175 std::uint32_t timeout_msecs = 0);
191 const std::string& name,
194 bool autoconnect =
true);
197 sentinel& ckquorum(
const std::string& name,
const reply_callback_t& reply_callback =
nullptr);
198 sentinel& failover(
const std::string& name,
const reply_callback_t& reply_callback =
nullptr);
199 sentinel& flushconfig(
const reply_callback_t& reply_callback =
nullptr);
200 sentinel& master(
const std::string& name,
const reply_callback_t& reply_callback =
nullptr);
201 sentinel& masters(
const reply_callback_t& reply_callback =
nullptr);
202 sentinel& monitor(
const std::string& name,
const std::string& ip, std::size_t port, std::size_t quorum,
const reply_callback_t& reply_callback =
nullptr);
203 sentinel& ping(
const reply_callback_t& reply_callback =
nullptr);
204 sentinel&
remove(
const std::string& name,
const reply_callback_t& reply_callback =
nullptr);
205 sentinel& reset(
const std::string& pattern,
const reply_callback_t& reply_callback =
nullptr);
206 sentinel& sentinels(
const std::string& name,
const reply_callback_t& reply_callback =
nullptr);
207 sentinel&
set(
const std::string& name,
const std::string& option,
const std::string& value,
const reply_callback_t& reply_callback =
nullptr);
208 sentinel& slaves(
const std::string& name,
const reply_callback_t& reply_callback =
nullptr);
214 sentinel_def(
const std::string& host, std::size_t port)
215 : m_host(host), m_port(port) {}
218 ~sentinel_def(
void) =
default;
225 get_host(
void)
const {
return m_host; }
231 get_port(
void)
const {
return m_port; }
264 void call_disconnect_handler(
void);
269 void clear_callbacks(
void);
275 void try_commit(
void);
281 std::vector<sentinel_def> m_sentinels;
291 std::queue<reply_callback_t> m_callbacks;
296 sentinel_disconnect_handler_t m_disconnect_handler;
301 std::mutex m_callbacks_mutex;
306 std::condition_variable m_sync_condvar;
311 std::atomic<unsigned int> m_callbacks_running;
sentinel & add_sentinel(const std::string &host, std::size_t port)
Definition: redis_connection.hpp:45
sentinel & operator=(const sentinel &)=delete
assignment operator
void connect(const std::string &host, std::size_t port, const sentinel_disconnect_handler_t &disconnect_handler=nullptr, std::uint32_t timeout_msecs=0)
void disconnect(bool wait_for_removal=false)
sentinel & send(const std::vector< std::string > &sentinel_cmd, const reply_callback_t &callback=nullptr)
std::function< void(reply &)> reply_callback_t
Definition: sentinel.hpp:66
Definition: sentinel.hpp:39
void connect_sentinel(std::uint32_t timeout_msecs=0, const sentinel_disconnect_handler_t &disconnect_handler=nullptr)
sentinel & sync_commit(const std::chrono::duration< Rep, Period > &timeout)
Definition: sentinel.hpp:103
sentinel & sync_commit(void)
std::function< void(sentinel &)> sentinel_disconnect_handler_t
Definition: sentinel.hpp:151
bool get_master_addr_by_name(const std::string &name, std::string &host, std::size_t &port, bool autoconnect=true)
void clear_sentinels(void)
sentinel(void)
ctor & dtor
Definition: array_builder.hpp:29