SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
MngrStatus.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_manager_MngrStatus_h
7 #define swcdb_manager_MngrStatus_h
8 
9 
13 
14 
15 namespace SWC { namespace Manager {
16 
17 
18 class MngrStatus final {
19  public:
20 
21  typedef std::shared_ptr<MngrStatus> Ptr;
22 
24  MngrStatus(uint8_t a_role, cid_t begin, cid_t end,
25  const Comm::EndPoints& a_endpoints,
26  Comm::ConnHandlerPtr c, uint32_t pr)
27  : priority(pr), state(DB::Types::MngrState::NOTSET),
28  role(a_role), cid_begin(begin), cid_end(end),
29  endpoints(a_endpoints),
30  conn(c), failures(0) {
31  }
32 
34  MngrStatus(const uint8_t** bufp, size_t* remainp)
35  : priority(Serialization::decode_i32(bufp, remainp)),
36  state(DB::Types::MngrState(Serialization::decode_i8(bufp, remainp))),
37  role(Serialization::decode_i8(bufp, remainp)),
38  cid_begin(Serialization::decode_vi64(bufp, remainp)),
39  cid_end(Serialization::decode_vi64(bufp, remainp)),
40  endpoints(Serialization::decode_endpoints(bufp, remainp)),
41  conn(nullptr), failures(0) {
42  }
43 
44  ~MngrStatus() noexcept { }
45 
47  bool eq_grouping(const MngrStatus& other) const noexcept {
48  return role == other.role &&
49  cid_begin == other.cid_begin &&
50  cid_end == other.cid_end;
51  }
52 
53  size_t encoded_length() const noexcept {
54  size_t len = 6
58  return len;
59  }
60 
61  void encode(uint8_t** bufp) const {
63  Serialization::encode_i8(bufp, uint8_t(state.load()));
68  }
69 
70  void print(std::ostream& out) const {
71  out << "MngrStatus(priority=" << priority
72  << " state=" << DB::Types::to_string(state)
73  << " role=" << DB::Types::MngrRole::to_string(role)
74  << " cid=" << cid_begin << '-' << cid_end;
75  Comm::print(out << ' ', endpoints);
76  out << ')';
77  }
78 
79 
82  const uint8_t role;
84  const cid_t cid_end;
86 
87  Comm::ConnHandlerPtr conn; // mngr-inchain
88  int failures;
89 };
90 
92 
93 
94 
95 
96 }}
97 
98 #endif // swcdb_manager_MngrStatus_h
SWC::Manager::MngrStatus::~MngrStatus
~MngrStatus() noexcept
Definition: MngrStatus.h:44
SWC::DB::Types::MngrColumn::NOTSET
@ NOTSET
Definition: MngrColumnState.h:17
SWC::Core::Atomic< uint32_t >
SWC::Manager::MngrStatus::MngrStatus
SWC_CAN_INLINE MngrStatus(uint8_t a_role, cid_t begin, cid_t end, const Comm::EndPoints &a_endpoints, Comm::ConnHandlerPtr c, uint32_t pr)
Definition: MngrStatus.h:24
SWC::Serialization::encode_i32
SWC_CAN_INLINE void encode_i32(uint8_t **bufp, uint32_t val) noexcept
Definition: Serialization.h:138
SWC::Manager::MngrStatus::Ptr
std::shared_ptr< MngrStatus > Ptr
Definition: MngrStatus.h:21
SWC::DB::Types::to_string
const char *SWC_CONST_FUNC to_string(Column typ) noexcept
Definition: Column.cc:38
SWC::Manager::MngrStatus::encoded_length
size_t encoded_length() const noexcept
Definition: MngrStatus.h:53
SWC::Manager::MngrStatus::role
const uint8_t role
Definition: MngrStatus.h:82
SWC::Serialization::encode_i8
constexpr SWC_CAN_INLINE void encode_i8(uint8_t **bufp, uint8_t val) noexcept
Definition: Serialization.h:85
SWC::Serialization::encoded_length
SWC_CAN_INLINE uint8_t encoded_length(const Comm::EndPoint &endpoint) noexcept
Definition: Resolver.h:63
SWC::Comm::print
void print(std::ostream &out, const EndPoints &endpoints)
Definition: Resolver.cc:85
SWC::Manager::MngrStatus::cid_end
const cid_t cid_end
Definition: MngrStatus.h:84
SWC::Serialization::encode
void encode(uint8_t **bufp, const Comm::EndPoint &endpoint)
Definition: Resolver.cc:22
MngrState.h
SWC::Manager::MngrStatus::priority
Core::Atomic< uint32_t > priority
Definition: MngrStatus.h:80
Resolver.h
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Manager::MngrStatus::encode
void encode(uint8_t **bufp) const
Definition: MngrStatus.h:61
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Manager::MngrStatus::cid_begin
const cid_t cid_begin
Definition: MngrStatus.h:83
SWC::Serialization::encoded_length_vi64
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi64(uint64_t val) noexcept
Definition: Serialization.h:272
SWC::Manager::MngrStatus::endpoints
const Comm::EndPoints endpoints
Definition: MngrStatus.h:85
Serializable.h
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Manager::MngrStatus::conn
Comm::ConnHandlerPtr conn
Definition: MngrStatus.h:87
SWC::Core::Vector< EndPoint >
SWC::Manager::MngrStatus
Definition: MngrStatus.h:18
SWC::Serialization::decode_endpoints
SWC_CAN_INLINE Comm::EndPoints decode_endpoints(const uint8_t **bufp, size_t *remainp)
Definition: Resolver.h:81
SWC::Manager::MngrStatus::print
void print(std::ostream &out) const
Definition: MngrStatus.h:70
SWC::Core::AtomicBase::load
constexpr SWC_CAN_INLINE T load() const noexcept
Definition: Atomic.h:42
SWC::Manager::MngrStatus::eq_grouping
SWC_CAN_INLINE bool eq_grouping(const MngrStatus &other) const noexcept
Definition: MngrStatus.h:47
SWC::Serialization::decode_vi64
constexpr SWC_CAN_INLINE uint64_t decode_vi64(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:302
SWC::DB::Types::MngrState
MngrState
Definition: MngrState.h:14
SWC::Manager::MngrStatus::failures
int failures
Definition: MngrStatus.h:88
SWC::Serialization::encode_vi64
constexpr SWC_CAN_INLINE void encode_vi64(uint8_t **bufp, uint64_t val)
Definition: Serialization.h:286
SWC::Manager::MngrStatus::state
Core::Atomic< DB::Types::MngrState > state
Definition: MngrStatus.h:81
SWC::Manager::MngrsStatus
Core::Vector< MngrStatus::Ptr > MngrsStatus
Definition: MngrStatus.h:91
SWC::Manager::MngrStatus::MngrStatus
SWC_CAN_INLINE MngrStatus(const uint8_t **bufp, size_t *remainp)
Definition: MngrStatus.h:34
SWC::Serialization::decode_i8
constexpr SWC_CAN_INLINE uint8_t decode_i8(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:91
SWC::Serialization::decode_i32
SWC_CAN_INLINE uint32_t decode_i32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:143
SWC::DB::Types::MngrRole::to_string
std::string to_string(uint8_t role)
Definition: MngrRole.cc:19