SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ClientConnQueues.h
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 #ifndef swcdb_core_comm_ClientConnQueues_h
7 #define swcdb_core_comm_ClientConnQueues_h
8 
11 
12 namespace SWC { namespace Comm { namespace client {
13 
14 class ConnQueues;
15 typedef std::shared_ptr<ConnQueues> ConnQueuesPtr;
16 
17 class Host final : public ConnQueue {
18  public:
19  typedef std::shared_ptr<Host> Ptr;
20 
22 
24  const Config::Property::Value_int32_g::Ptr keepalive_ms,
25  const Config::Property::Value_int32_g::Ptr again_delay_ms);
26 
27  virtual ~Host();
28 
29  bool connect() override;
30 
31  void close_issued() override;
32 
33  protected:
35 };
36 
37 
38 class ConnQueues final :
39  private Core::Vector<Host::Ptr>,
40  public std::enable_shared_from_this<ConnQueues> {
41 
42  public:
43 
49 
51  ConnQueues(const Serialized::Ptr a_service,
54  const Config::Property::Value_int32_g::Ptr keepalive_ms,
55  const Config::Property::Value_int32_g::Ptr again_delay_ms) noexcept
56  : service(a_service),
57  cfg_conn_timeout(timeout),
58  cfg_conn_probes(probes),
59  cfg_keepalive_ms(keepalive_ms),
60  cfg_again_delay_ms(again_delay_ms),
61  m_mutex() {
62  }
63 
64  ConnQueues(ConnQueues&&) = delete;
65  ConnQueues(const ConnQueues&) = delete;
67  ConnQueues& operator=(const ConnQueues&) = delete;
68 
69  ~ConnQueues() noexcept;
70 
71  void print(std::ostream& out);
72 
73  Host::Ptr get(const EndPoints& endpoints);
74 
75  void remove(const EndPoints& endpoints);
76 
77  void stop();
78 
79  private:
80 
81  Core::MutexSptd m_mutex;
82 
83 };
84 
85 
86 
88 Host::Host(const ConnQueuesPtr a_queues, const EndPoints& a_endpoints,
89  const Config::Property::Value_int32_g::Ptr keepalive_ms,
90  const Config::Property::Value_int32_g::Ptr again_delay_ms)
91  : ConnQueue(a_queues->service->io(), keepalive_ms, again_delay_ms),
92  endpoints(a_endpoints), queues(a_queues) {
93 }
94 
95 
96 
97 }}} //namespace SWC::Comm::client
98 
99 
100 #ifdef SWC_IMPL_SOURCE
102 #endif
103 
104 
105 //
106 #endif // swcdb_core_comm_ClientConnQueues_h
SWC::Comm::client::ConnQueues::service
const Serialized::Ptr service
Definition: ClientConnQueues.h:44
SWC::Comm::client::ConnQueues::remove
void remove(const EndPoints &endpoints)
Definition: ClientConnQueues.cc:66
SWC::Comm::client::ConnQueues::ConnQueues
SWC_CAN_INLINE ConnQueues(const Serialized::Ptr a_service, const Config::Property::Value_int32_g::Ptr timeout, const Config::Property::Value_uint16_g::Ptr probes, const Config::Property::Value_int32_g::Ptr keepalive_ms, const Config::Property::Value_int32_g::Ptr again_delay_ms) noexcept
Definition: ClientConnQueues.h:51
SWC::Comm::client::Host
Definition: ClientConnQueues.h:17
SWC::Comm::client::ConnQueues::~ConnQueues
~ConnQueues() noexcept
Definition: ClientConnQueues.cc:45
SWC::Comm::client::ConnQueues::stop
void stop()
Definition: ClientConnQueues.cc:82
SWC::Comm::client::ConnQueue
Definition: ClientConnQueue.h:59
SWC::Comm::client::ConnQueues::ConnQueues
ConnQueues(ConnQueues &&)=delete
SWC::Comm::client::ConnQueues::cfg_conn_timeout
const Config::Property::Value_int32_g::Ptr cfg_conn_timeout
Definition: ClientConnQueues.h:45
SWC::Comm::client::ConnQueues::get
Host::Ptr get(const EndPoints &endpoints)
Definition: ClientConnQueues.cc:56
SWC::Comm::client::ConnQueuesPtr
std::shared_ptr< ConnQueues > ConnQueuesPtr
Definition: ClientConnQueues.h:14
SWC::Comm::client::Host::Host
Host(const ConnQueuesPtr queues, const EndPoints &endpoints, const Config::Property::Value_int32_g::Ptr keepalive_ms, const Config::Property::Value_int32_g::Ptr again_delay_ms)
Definition: ClientConnQueues.h:88
SWC::Comm::client::Host::queues
const ConnQueuesPtr queues
Definition: ClientConnQueues.h:34
SWC::Comm::client::Host::Ptr
std::shared_ptr< Host > Ptr
Definition: ClientConnQueues.h:19
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Comm::client::ConnQueues::operator=
ConnQueues & operator=(const ConnQueues &)=delete
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::client::ConnQueues::cfg_again_delay_ms
const Config::Property::Value_int32_g::Ptr cfg_again_delay_ms
Definition: ClientConnQueues.h:48
SWC::Comm::client::ConnQueues::print
void print(std::ostream &out)
Definition: ClientConnQueues.cc:47
ClientConnQueue.h
SWC::Comm::client::Host::endpoints
const EndPoints endpoints
Definition: ClientConnQueues.h:21
SWC::Comm::client::Host::close_issued
void close_issued() override
Definition: ClientConnQueues.cc:15
SWC::Core::Vector< EndPoint >
ClientConnQueues.cc
SWC::Comm::client::Host::~Host
virtual ~Host()
Definition: ClientConnQueues.cc:11
SWC::Comm::client::Host::connect
bool connect() override
Definition: ClientConnQueues.cc:19
SWC::Config::Property::Value_uint16_g
Definition: Property.h:548
SWC::Comm::client::ConnQueues
Definition: ClientConnQueues.h:40
SWC::Comm::client::Serialized::Ptr
std::shared_ptr< Serialized > Ptr
Definition: SerializedClient.h:28
SWC::Comm::client::ConnQueues::ConnQueues
ConnQueues(const ConnQueues &)=delete
SWC::Comm::client::ConnQueues::m_mutex
Core::MutexSptd m_mutex
Definition: ClientConnQueues.h:81
SWC::Comm::client::ConnQueues::cfg_conn_probes
const Config::Property::Value_uint16_g::Ptr cfg_conn_probes
Definition: ClientConnQueues.h:46
SWC::Comm::client::ConnQueues::operator=
ConnQueues & operator=(ConnQueues &&)=delete
SWC::Comm::client::ConnQueues::cfg_keepalive_ms
const Config::Property::Value_int32_g::Ptr cfg_keepalive_ms
Definition: ClientConnQueues.h:47
SWC::Config::Property::Value_int32_g
Definition: Property.h:586
SerializedClient.h