SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnList_Sync.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_bkr_req_ColumnList_Sync_h
7 #define swcdb_db_protocol_bkr_req_ColumnList_Sync_h
8 
9 
12 
13 
14 namespace SWC { namespace Comm { namespace Protocol {
15 namespace Bkr { namespace Req {
16 
17 
19  public:
20 
21  template<typename... DataArgsT>
23  static std::shared_ptr<ColumnList<ColumnList_Sync>>
25  const uint32_t timeout,
26  DataArgsT&&... args) {
27  return ColumnList<ColumnList_Sync>::make(params, timeout, args...);
28  }
29 
30  template<typename... DataArgsT>
32  static void request(const Mngr::Params::ColumnListReq& params,
33  const uint32_t timeout,
34  DataArgsT&&... args) {
35  auto req = make(params, timeout, args...);
36  req->run();
37  req->data.await.wait();
38  }
39 
40 
42 
45  int& a_err, DB::SchemasVec& a_schemas) noexcept
46  : await(),
47  clients(a_clients), err(a_err), m_mutex(),
48  schemas(a_schemas) {
49  }
50 
51  ~ColumnList_Sync() noexcept { }
52 
55  return clients;
56  }
57 
59  bool valid() {
60  return true;
61  }
62 
65  int error,
66  const Mngr::Params::ColumnListRsp& rsp) {
67  if(!(err = error)) {
68  if(rsp.expected) {
70  if(schemas.empty()) {
71  schemas = std::move(rsp.schemas);
72  } else {
75  schemas.cend(), rsp.schemas.cbegin(), rsp.schemas.cend());
76  }
77  if(schemas.size() != rsp.expected)
78  return;
79  } else {
80  schemas = std::move(rsp.schemas);
81  }
82  }
84  }
85 
86  private:
88  int& err;
91 
92 };
93 
94 
95 
96 }}}}}
97 
98 
99 
100 #endif // swcdb_db_protocol_bkr_req_ColumnList_Sync_h
SWC::Comm::Protocol::Mngr::Params::ColumnListReq
Definition: ColumnList.h:18
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::schemas
DB::SchemasVec & schemas
Definition: ColumnList_Sync.h:90
StateSynchronization.h
SWC::Comm::Protocol::Bkr::Req::ColumnList::make
static SWC_CAN_INLINE Ptr make(const Mngr::Params::ColumnListReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnList.h:27
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::Core::MutexSptd::scope
Definition: MutexSptd.h:96
ColumnList.h
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::callback
SWC_CAN_INLINE void callback(const client::ConnQueue::ReqBase::Ptr &, int error, const Mngr::Params::ColumnListRsp &rsp)
Definition: ColumnList_Sync.h:64
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::await
Core::StateSynchronization await
Definition: ColumnList_Sync.h:41
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::ColumnList_Sync
SWC_CAN_INLINE ColumnList_Sync(const SWC::client::Clients::Ptr &a_clients, int &a_err, DB::SchemasVec &a_schemas) noexcept
Definition: ColumnList_Sync.h:44
SWC::Core::Vector::empty
constexpr SWC_CAN_INLINE bool empty() const noexcept
Definition: Vector.h:168
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::valid
SWC_CAN_INLINE bool valid()
Definition: ColumnList_Sync.h:59
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::clients
SWC::client::Clients::Ptr clients
Definition: ColumnList_Sync.h:87
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::make
static SWC_CAN_INLINE std::shared_ptr< ColumnList< ColumnList_Sync > > make(const Mngr::Params::ColumnListReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnList_Sync.h:24
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::get_clients
SWC_CAN_INLINE SWC::client::Clients::Ptr & get_clients() noexcept
Definition: ColumnList_Sync.h:54
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::err
int & err
Definition: ColumnList_Sync.h:88
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync
Definition: ColumnList_Sync.h:18
SWC::Core::Vector< Schema::Ptr >
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::~ColumnList_Sync
~ColumnList_Sync() noexcept
Definition: ColumnList_Sync.h:51
SWC::Core::Vector::cend
constexpr SWC_CAN_INLINE const_iterator cend() const noexcept
Definition: Vector.h:232
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::request
static SWC_CAN_INLINE void request(const Mngr::Params::ColumnListReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: ColumnList_Sync.h:32
SWC::Core::StateSynchronization
Definition: StateSynchronization.h:16
SWC::Core::MutexSptd
Definition: MutexSptd.h:16
SWC::Comm::Protocol::Bkr::Req::ColumnList_Sync::m_mutex
Core::MutexSptd m_mutex
Definition: ColumnList_Sync.h:89
SWC::Core::StateSynchronization::acknowledge
SWC_CAN_INLINE void acknowledge() noexcept
Definition: StateSynchronization.h:31
SWC::Comm::client::ConnQueueReqBase::Ptr
std::shared_ptr< ConnQueueReqBase > Ptr
Definition: ClientConnQueue.h:25
SWC::Comm::Protocol::Mngr::Params::ColumnListRsp::expected
uint64_t expected
Definition: ColumnList.h:55
SWC::Core::Vector::cbegin
constexpr SWC_CAN_INLINE const_iterator cbegin() const noexcept
Definition: Vector.h:216
SWC::Core::Vector::size
constexpr SWC_CAN_INLINE size_type size() const noexcept
Definition: Vector.h:189
SWC::Core::Vector::insert
SWC_CAN_INLINE iterator insert(size_type offset, ArgsT &&... args)
Definition: Vector.h:367
SWC::Comm::Protocol::Mngr::Params::ColumnListRsp
Definition: ColumnList.h:46
SWC::Core::Vector::reserve
SWC_CAN_INLINE void reserve(size_type cap)
Definition: Vector.h:288
SWC::Comm::Protocol::Mngr::Params::ColumnListRsp::schemas
DB::SchemasVec schemas
Definition: ColumnList.h:56