SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
MngrActive.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_db_protocol_mngr_req_MngrActive_h
7 #define swcdb_db_protocol_mngr_req_MngrActive_h
8 
9 
14 
15 
16 namespace SWC { namespace Comm { namespace Protocol {
17 namespace Mngr { namespace Req {
18 
19 
21  public:
22  typedef std::shared_ptr<MngrActive> Ptr;
23 
26  const cid_t& a_cid, const DispatchHandler::Ptr& hdlr,
27  uint32_t timeout_ms=60000) {
28  return Ptr(new MngrActive(
30  }
31 
34  const uint8_t& a_role, const DispatchHandler::Ptr& hdlr,
35  uint32_t timeout_ms=60000) {
36  return Ptr(new MngrActive(
38  }
39 
42  const uint8_t& a_role, const cid_t& a_cid,
43  const DispatchHandler::Ptr& a_hdlr, uint32_t a_timeout_ms)
44  : client::ConnQueue::ReqBase(
45  Buffers::make(
46  Params::MngrActiveReq(a_role, a_cid),
47  0, MNGR_ACTIVE, a_timeout_ms
48  )
49  ),
50  clients(a_clients),
51  role(a_role), cid(a_cid), hdlr(a_hdlr), nxt(0),
52  hosts(), group_host(),
53  timer(asio::high_resolution_timer(
54  clients->get_mngr_io()->executor())),
55  timeout_ms(a_timeout_ms) {
56  }
57 
58  virtual ~MngrActive() noexcept { }
59 
60  void run_within(uint32_t t_ms = 1000);
61 
62  void handle_no_conn() override;
63 
64  bool run() override;
65 
66  void handle(ConnHandlerPtr conn, const Event::Ptr& ev) override;
67 
68  private:
70  const uint8_t role;
71  const cid_t cid;
73  size_t nxt;
76  asio::high_resolution_timer timer;
77 
78  protected:
79  const uint32_t timeout_ms;
80 };
81 
82 }}}}}
83 
84 
85 #ifdef SWC_IMPL_SOURCE
87 #endif
88 
89 #endif // swcdb_db_protocol_mngr_req_MngrActive_h
SWC::Comm::Protocol::Mngr::Req::MngrActive::MngrActive
SWC_CAN_INLINE MngrActive(const SWC::client::Clients::Ptr &a_clients, const uint8_t &a_role, const cid_t &a_cid, const DispatchHandler::Ptr &a_hdlr, uint32_t a_timeout_ms)
Definition: MngrActive.h:41
Groups.h
Clients.h
SWC::DB::SchemaPrimitives::NO_CID
static constexpr const cid_t NO_CID
Definition: Schema.h:25
SWC::client::Query::ReqBase
Comm::client::ConnQueue::ReqBase ReqBase
Definition: Profiling.h:21
SWC::client::Mngr::Groups::GroupHost
Definition: Groups.h:65
SWC::Comm::client::ConnQueueReqBase
Definition: ClientConnQueue.h:22
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
MngrActive.cc
SWC::Comm::Protocol::Mngr::Req::MngrActive::make
static SWC_CAN_INLINE Ptr make(const SWC::client::Clients::Ptr &clients, const uint8_t &a_role, const DispatchHandler::Ptr &hdlr, uint32_t timeout_ms=60000)
Definition: MngrActive.h:33
MngrActive.h
SWC::Comm::Protocol::Mngr::Req::MngrActive::hdlr
DispatchHandler::Ptr hdlr
Definition: MngrActive.h:72
SWC::Comm::Protocol::Mngr::Req::MngrActive::group_host
SWC::client::Mngr::Groups::GroupHost group_host
Definition: MngrActive.h:75
SWC::Comm::Protocol::Mngr::Req::MngrActive::Ptr
std::shared_ptr< MngrActive > Ptr
Definition: MngrActive.h:22
SWC::Comm::Protocol::Mngr::Req::MngrActive::cid
const cid_t cid
Definition: MngrActive.h:71
SWC::Comm::Protocol::Mngr::Req::MngrActive::run_within
void run_within(uint32_t t_ms=1000)
Definition: MngrActive.cc:15
SWC::Comm::Protocol::Mngr::Req::MngrActive::timeout_ms
const uint32_t timeout_ms
Definition: MngrActive.h:79
SWC::Comm::Protocol::Mngr::Req::MngrActive::clients
SWC::client::Clients::Ptr clients
Definition: MngrActive.h:69
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Mngr::Req::MngrActive::run
bool run() override
Definition: MngrActive.cc:60
SWC::Comm::Protocol::Mngr::Req::MngrActive::~MngrActive
virtual ~MngrActive() noexcept
Definition: MngrActive.h:58
SWC::Comm::Protocol::Mngr::Req::MngrActive::role
const uint8_t role
Definition: MngrActive.h:70
SWC::Comm::Protocol::Mngr::MNGR_ACTIVE
@ MNGR_ACTIVE
Definition: Commands.h:63
SWC::Comm::Buffers
Definition: Buffers.h:20
Commands.h
SWC::Comm::Protocol::Mngr::Req::MngrActive::make
static SWC_CAN_INLINE Ptr make(const SWC::client::Clients::Ptr &clients, const cid_t &a_cid, const DispatchHandler::Ptr &hdlr, uint32_t timeout_ms=60000)
Definition: MngrActive.h:25
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Comm::Protocol::Mngr::Req::MngrActive::handle_no_conn
void handle_no_conn() override
Definition: MngrActive.cc:43
SWC::Comm::Protocol::Mngr::Req::MngrActive
Definition: MngrActive.h:20
SWC::Core::Vector< Comm::EndPoints >
SWC::Comm::Protocol::Mngr::Req::MngrActive::timer
asio::high_resolution_timer timer
Definition: MngrActive.h:76
SWC::Comm::Protocol::Mngr::Req::MngrActive::nxt
size_t nxt
Definition: MngrActive.h:73
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Comm::client::ConnQueueReqBase::Ptr
std::shared_ptr< ConnQueueReqBase > Ptr
Definition: ClientConnQueue.h:25
SWC::Comm::Protocol::Mngr::Req::MngrActive::handle
void handle(ConnHandlerPtr conn, const Event::Ptr &ev) override
Definition: MngrActive.cc:77
SWC::Comm::DispatchHandler::Ptr
std::shared_ptr< DispatchHandler > Ptr
Definition: DispatchHandler.h:20
SWC::Comm::Protocol::Mngr::Req::MngrActive::hosts
SWC::client::Mngr::Hosts hosts
Definition: MngrActive.h:74
SWC::DB::Types::MngrRole::COLUMNS
const uint8_t COLUMNS
Definition: MngrRole.h:14