SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
Common.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_client_Query_Update_Handlers_Common_h
7 #define swcdb_db_client_Query_Update_Handlers_Common_h
8 
9 
11 
12 
13 namespace SWC { namespace client { namespace Query { namespace Update {
14 
15 namespace Handlers {
16 
17 
18 class Common : public BaseUnorderedMap {
19  public:
20  typedef std::shared_ptr<Common> Ptr;
21  typedef std::function<void(const Common::Ptr&)> Cb_t;
22 
24  static Ptr make(const Clients::Ptr& clients,
25  Cb_t&& cb=nullptr, const Comm::IoContextPtr& io=nullptr,
27  return Ptr(new Common(clients, std::move(cb), io, executor));
28  }
29 
30  using Base::error;
31 
33 
35  Cb_t&& cb, const Comm::IoContextPtr& io=nullptr,
37 
38  virtual ~Common() noexcept { }
39 
40  virtual bool requires_commit() noexcept override;
41 
42  virtual bool valid() noexcept override;
43 
44  virtual void response(int err=Error::OK) override;
45 
46 
47  void wait();
48 
49  bool wait_ahead_buffers(uint64_t from=0);
50 
51  void commit_or_wait(Base::Column* colp=nullptr, uint64_t from=0);
52 
53  void commit_if_need();
54 
55 
56  private:
57  const Cb_t m_cb;
59  std::mutex m_mutex;
60  std::condition_variable m_cv;
61 };
62 
63 
64 }}}}}
65 
66 
67 
68 #ifdef SWC_IMPL_SOURCE
70 #endif
71 
72 
73 #endif // swcdb_db_client_Query_Update_Handlers_Common_h
SWC::client::Query::Update::Handlers::Common::m_dispatcher_io
Comm::IoContextPtr m_dispatcher_io
Definition: Common.h:58
SWC::Core::AtomicBase< bool >
SWC::client::Clients::DEFAULT
@ DEFAULT
Definition: Clients.h:61
SWC::client::Query::Update::Handlers::Common::valid_state
Core::AtomicBool valid_state
Definition: Common.h:32
SWC::client::Query::Update::Handlers::Common::wait
void wait()
Definition: Common.cc:81
SWC::client::Query::Update::Handlers::Base::Ptr
std::shared_ptr< Base > Ptr
Definition: Base.h:27
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::Comm::IoContextPtr
std::shared_ptr< IoContext > IoContextPtr
Definition: IoContext.h:16
SWC::client::Query::Update::Handlers::BaseUnorderedMap
Definition: BaseUnorderedMap.h:20
SWC::DB::Types::Column
Column
Definition: Column.h:18
SWC::client::Query::Update::Handlers::Common::valid
virtual bool valid() noexcept override
Definition: Common.cc:31
SWC::client::Query::Update::Handlers::Common::m_cb
const Cb_t m_cb
Definition: Common.h:57
SWC::client::Query::Update::Handlers::Common
Definition: Common.h:18
SWC::client::Query::Update::Handlers::Common::make
static SWC_CAN_INLINE Ptr make(const Clients::Ptr &clients, Cb_t &&cb=nullptr, const Comm::IoContextPtr &io=nullptr, Clients::Flag executor=Clients::DEFAULT)
Definition: Common.h:24
SWC::Error::OK
@ OK
Definition: Error.h:45
Common.cc
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::client::Query::Update::Handlers::Common::wait_ahead_buffers
bool wait_ahead_buffers(uint64_t from=0)
Definition: Common.cc:88
SWC::client::Query::Update::Handlers::Common::commit_or_wait
void commit_or_wait(Base::Column *colp=nullptr, uint64_t from=0)
Definition: Common.cc:107
SWC::client::Query::Update::Handlers::Base::executor
const Clients::Flag executor
Definition: Base.h:119
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::client::Query::Update::Handlers::Common::Cb_t
std::function< void(const Common::Ptr &)> Cb_t
Definition: Common.h:21
SWC::client::Clients::Flag
Flag
Definition: Clients.h:60
SWC::client::Query::Update::Handlers::Common::response
virtual void response(int err=Error::OK) override
Definition: Common.cc:35
SWC::client::Query::Update::Handlers::Common::~Common
virtual ~Common() noexcept
Definition: Common.h:38
SWC::client::Query::Update::Handlers::Common::Common
Common(const Clients::Ptr &clients, Cb_t &&cb, const Comm::IoContextPtr &io=nullptr, Clients::Flag executor=Clients::DEFAULT) noexcept
Definition: Common.cc:18
SWC::client::Query::Update::Handlers::Base::error
virtual int error() noexcept
Definition: Base.h:159
SWC::client::Query::Update::Handlers::Common::m_mutex
std::mutex m_mutex
Definition: Common.h:59
SWC::client::Query::Update::Handlers::Common::Ptr
std::shared_ptr< Common > Ptr
Definition: Common.h:20
SWC::Condition::from
Comp from(const char **buf, uint32_t *remainp, uint8_t extended=0x00) noexcept
Definition: Comparators.cc:15
SWC::client::Query::Update::Handlers::Common::commit_if_need
void commit_if_need()
Definition: Common.cc:112
SWC::client::Query::Update::Handlers::Common::requires_commit
virtual bool requires_commit() noexcept override
Definition: Common.cc:27
SWC::client::Query::Update::Handlers::Base::clients
Clients::Ptr clients
Definition: Base.h:110
SWC::client::Query::Update::Handlers::Common::m_cv
std::condition_variable m_cv
Definition: Common.h:60
BaseUnorderedMap.h
SWC::client::Query::Update::Handlers::Base
Definition: Base.h:25