SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
RgrMngId.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_params_RgrMngId_h
7 #define swcdb_db_protocol_mngr_params_RgrMngId_h
8 
9 
11 
12 
13 namespace SWC { namespace Comm { namespace Protocol {
14 namespace Mngr { namespace Params {
15 
16 
17 class RgrMngId final : public Serializable {
18  public:
19 
20  enum Flag : uint8_t {
25  MNGR_ACK = 5,
26  RGR_REQ = 6, // >= params with host endpoints
27  RGR_ACK = 7,
30  };
31 
33  RgrMngId() noexcept
34  : endpoints(), rgrid(), flag(),
35  fs(FS::Type::UNKNOWN) {
36  }
37 
39  RgrMngId(rgrid_t a_rgrid, Flag a_flag, const EndPoints& a_endpoints)
40  : endpoints(a_endpoints),
41  rgrid(a_rgrid), flag(a_flag),
42  fs(FS::Type::UNKNOWN) {
43  }
44 
46  ~RgrMngId() noexcept {}
47 
48  void print(std::ostream& out) const {
49  out << "RgrMngId(id=" << rgrid;
50  Comm::print(out << ' ', endpoints);
51  out << " flag=" << int(flag);
52  if(flag == Flag::MNGR_ASSIGNED)
53  out << " fs=" << FS::to_string(fs);
54  out << ')';
55  }
56 
61 
62  private:
63 
64  size_t internal_encoded_length() const override {
65  size_t len = 1;
66  if(flag != Flag::MNGR_NOT_ACTIVE && flag != Flag::MNGR_ACK)
68 
69  if(flag >= Flag::RGR_REQ)
71 
72  if(flag == Flag::MNGR_ASSIGNED)
73  ++len; // fs-type
74  return len;
75  }
76 
77  void internal_encode(uint8_t** bufp) const override {
79  if(flag != Flag::MNGR_NOT_ACTIVE && flag != Flag::MNGR_ACK)
81 
82  if(flag >= Flag::RGR_REQ)
84 
85  if(flag == Flag::MNGR_ASSIGNED)
87  }
88 
89  void internal_decode(const uint8_t** bufp, size_t* remainp) override {
90  flag = Flag(Serialization::decode_i8(bufp, remainp));
91  if(flag != Flag::MNGR_NOT_ACTIVE && flag != Flag::MNGR_ACK)
92  rgrid = Serialization::decode_vi64(bufp, remainp);
93 
94  if(flag >= Flag::RGR_REQ)
95  Serialization::decode(bufp, remainp, endpoints);
96 
97  if(flag == Flag::MNGR_ASSIGNED)
98  fs = FS::Type(Serialization::decode_i8(bufp, remainp));
99  }
100 
101 };
102 
103 
104 }}}}}
105 
106 #endif // swcdb_db_protocol_params_RgrMngId_h
SWC::Comm::Protocol::Mngr::Params::RgrMngId::MNGR_REASSIGN
@ MNGR_REASSIGN
Definition: RgrMngId.h:23
SWC::Comm::Protocol::Mngr::Params::RgrMngId::MNGR_ASSIGNED
@ MNGR_ASSIGNED
Definition: RgrMngId.h:21
SWC::FS::Type
Type
Definition: FileSystem.h:20
SWC::Comm::Protocol::Mngr::Params::RgrMngId::internal_decode
void internal_decode(const uint8_t **bufp, size_t *remainp) override
Definition: RgrMngId.h:89
SWC::Comm::Protocol::Mngr::Params::RgrMngId::flag
Flag flag
Definition: RgrMngId.h:59
SWC::Core::Encoder::Type
Type
Definition: Encoder.h:28
SWC::Comm::Protocol::Mngr::Params::RgrMngId::rgrid
rgrid_t rgrid
Definition: RgrMngId.h:58
SWC::Comm::Protocol::Mngr::Params::RgrMngId::internal_encoded_length
size_t internal_encoded_length() const override
Definition: RgrMngId.h:64
SWC::Serialization::encode_i8
constexpr SWC_CAN_INLINE void encode_i8(uint8_t **bufp, uint8_t val) noexcept
Definition: Serialization.h:85
SWC::Comm::Protocol::Mngr::Params::RgrMngId::Flag
Flag
Definition: RgrMngId.h:20
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::Serialization::encode
void encode(uint8_t **bufp, const Comm::EndPoint &endpoint)
Definition: Resolver.cc:22
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Comm::Protocol::Mngr::Params::RgrMngId::MNGR_ACK
@ MNGR_ACK
Definition: RgrMngId.h:25
SWC::Comm::Protocol::Mngr::Params::RgrMngId::RgrMngId
SWC_CAN_INLINE RgrMngId(rgrid_t a_rgrid, Flag a_flag, const EndPoints &a_endpoints)
Definition: RgrMngId.h:39
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Mngr::Params::RgrMngId::MNGR_NOT_ACTIVE
@ MNGR_NOT_ACTIVE
Definition: RgrMngId.h:22
SWC::Comm::Protocol::Mngr::Params::RgrMngId::RGR_DISAGREE
@ RGR_DISAGREE
Definition: RgrMngId.h:28
SWC::Comm::Protocol::Mngr::Params::RgrMngId::RGR_REQ
@ RGR_REQ
Definition: RgrMngId.h:26
SWC::Comm::Serializable
Definition: Serializable.h:18
SWC::rgrid_t
uint64_t rgrid_t
Definition: Identifiers.h:18
SWC::Serialization::encoded_length_vi64
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi64(uint64_t val) noexcept
Definition: Serialization.h:272
Serializable.h
SWC::Comm::Protocol::Mngr::Params::RgrMngId::MNGR_REREQ
@ MNGR_REREQ
Definition: RgrMngId.h:24
SWC::Comm::Protocol::Mngr::Params::RgrMngId::fs
FS::Type fs
Definition: RgrMngId.h:60
SWC::Core::Vector< EndPoint >
SWC::Comm::Protocol::Mngr::Params::RgrMngId::print
void print(std::ostream &out) const
Definition: RgrMngId.h:48
SWC::Comm::Protocol::Mngr::Params::RgrMngId::endpoints
EndPoints endpoints
Definition: RgrMngId.h:57
SWC::Serialization::decode
Comm::EndPoint decode(const uint8_t **bufp, size_t *remainp)
Definition: Resolver.cc:35
SWC::Comm::Protocol::Mngr::Params::RgrMngId::internal_encode
void internal_encode(uint8_t **bufp) const override
Definition: RgrMngId.h:77
SWC::Serialization::decode_vi64
constexpr SWC_CAN_INLINE uint64_t decode_vi64(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:302
SWC::Comm::Protocol::Mngr::Params::RgrMngId::RgrMngId
SWC_CAN_INLINE RgrMngId() noexcept
Definition: RgrMngId.h:33
SWC::Comm::Protocol::Mngr::Params::RgrMngId::RGR_ACK
@ RGR_ACK
Definition: RgrMngId.h:27
SWC::Comm::Protocol::Mngr::Params::RgrMngId
Definition: RgrMngId.h:17
SWC::Comm::Protocol::Mngr::Params::RgrMngId::RGR_SHUTTINGDOWN
@ RGR_SHUTTINGDOWN
Definition: RgrMngId.h:29
SWC::Comm::Protocol::Mngr::Params::RgrMngId::~RgrMngId
SWC_CAN_INLINE ~RgrMngId() noexcept
Definition: RgrMngId.h:46
SWC::Serialization::encode_vi64
constexpr SWC_CAN_INLINE void encode_vi64(uint8_t **bufp, uint64_t val)
Definition: Serialization.h:286
SWC::Error::MNGR_NOT_ACTIVE
@ MNGR_NOT_ACTIVE
Definition: Error.h:87
SWC::Serialization::decode_i8
constexpr SWC_CAN_INLINE uint8_t decode_i8(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:91
SWC::FS::to_string
const char *SWC_CONST_FUNC to_string(Type typ) noexcept
Definition: FileSystem.cc:47