|
SWC-DB
v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
|
Go to the documentation of this file.
6 #ifndef swcdb_ranger_Protocol_mngr_req_RgrMngId_h
7 #define swcdb_ranger_Protocol_mngr_req_RgrMngId_h
12 namespace SWC {
namespace Comm {
namespace Protocol {
13 namespace Mngr {
namespace Req {
19 typedef std::shared_ptr<RgrMngId>
Ptr;
22 std::function<
void()>&& cb =
nullptr)
23 : client::ConnQueue::
ReqBase(nullptr),
25 Env::Config::settings()->get<Config::Property::Value_int32_g>(
26 "swc.rgr.id.validation.interval")),
30 m_timer(asio::high_resolution_timer(ioctx->executor())),
55 rgr_data->rgrid.load(),
56 Params::RgrMngId::Flag::RGR_SHUTTINGDOWN,
68 Params::RgrMngId::Flag::RGR_REQ,
98 if(ev->error || ev->response_code() !=
Error::OK) {
104 const uint8_t *ptr = ev->data.base + 4;
105 size_t remain = ev->data.size - 4;
106 rsp_params.
decode(&ptr, &remain);
113 switch(rsp_params.
flag) {
115 case Params::RgrMngId::Flag::MNGR_ACK: {
119 case Params::RgrMngId::Flag::MNGR_REREQ: {
123 case Params::RgrMngId::Flag::RGR_SHUTTINGDOWN: {
135 case Params::RgrMngId::Flag::MNGR_REASSIGN:
136 case Params::RgrMngId::Flag::MNGR_ASSIGNED: {
140 if(rsp_params.
flag == Params::RgrMngId::Flag::MNGR_ASSIGNED &&
147 <<
" not matching with Mngr's FS-type="
157 if(!rgr_data->rgrid || rgr_data->rgrid == rsp_params.
rgrid ||
158 (rgr_data->rgrid != rsp_params.
rgrid &&
159 rsp_params.
flag == Params::RgrMngId::Flag::MNGR_REASSIGN)) {
161 rgr_data->rgrid.store(rsp_params.
rgrid);
162 flag = Params::RgrMngId::Flag::RGR_ACK;
167 flag = Params::RgrMngId::Flag::RGR_DISAGREE;
212 TimerTask(
RgrMngId* a_ptr) noexcept : ptr(a_ptr) { }
213 void operator()(
const asio::error_code& ec) {
214 if(ec != asio::error::operation_aborted)
218 m_timer.async_wait(TimerTask(
this));
239 #endif // swcdb_ranger_Protocol_mngr_req_RgrMngId_h
constexpr SWC_CAN_INLINE bool compare_exchange_weak(T &at, T value) noexcept
RgrMngId & operator=(RgrMngId &&)=delete
SWC_CAN_INLINE Ptr req() noexcept
void handle(ConnHandlerPtr, const Event::Ptr &ev) override
static SWC_CAN_INLINE client::Clients::Ptr & get() noexcept
void create(const Params::RgrMngId ¶ms)
Core::MutexAtomic m_mutex
RgrMngId & operator=(const RgrMngId &)=delete
SWC_CAN_INLINE void clear() noexcept(_NoExceptDestructor)
#define SWC_LOG_OUT(pr, _code_)
RgrMngId(const RgrMngId &)=delete
static SWC_CAN_INLINE DB::RgrData * rgr_data() noexcept
const std::function< void()> cb_shutdown
Comm::client::ConnQueue::ReqBase ReqBase
static SWC_CAN_INLINE FS::Interface::Ptr & interface() noexcept
std::shared_ptr< IoContext > IoContextPtr
asio::high_resolution_timer m_timer
SWC_CAN_INLINE int32_t get() const noexcept
Core::Atomic< size_t > m_failures
constexpr SWC_CAN_INLINE bool empty() const noexcept
const Config::Property::Value_int32_g::Ptr cfg_check_interval
#define SWC_LOG(priority, message)
The SWC-DB C++ namespace 'SWC'.
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)
std::shared_ptr< ConnHandler > ConnHandlerPtr
void print(std::ostream &out)
static SWC_CAN_INLINE Ptr make(uint32_t reserve=0)
static SWC_CAN_INLINE bool is_shuttingdown() noexcept
RgrMngId(RgrMngId &&)=delete
void decode(const uint8_t **bufp, size_t *remainp)
static SWC_CAN_INLINE bool is_not_accepting() noexcept
std::shared_ptr< Event > Ptr
std::shared_ptr< RgrMngId > Ptr
virtual ~RgrMngId() noexcept
SWC_CAN_INLINE std::string to_string(const BitFieldInt< T, SZ > &v)
void handle_no_conn() override
#define SWC_LOG_CURRENT_EXCEPTION(_s_)
const char *SWC_CONST_FUNC to_string(Type typ) noexcept
RgrMngId(const IoContextPtr &ioctx, std::function< void()> &&cb=nullptr)