SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
BaseSingleColumn.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_BaseSingleColumn_h
7 #define swcdb_db_client_Query_Update_Handlers_BaseSingleColumn_h
8 
9 
11 
12 
13 namespace SWC { namespace client { namespace Query { namespace Update {
14 
15 namespace Handlers {
16 
17 
18 class BaseSingleColumn : public Base {
19  public:
20  typedef std::shared_ptr<BaseSingleColumn> Ptr;
21 
23 
25 
27  BaseSingleColumn(const Clients::Ptr& a_clients,
28  const cid_t cid, DB::Types::KeySeq seq,
29  uint32_t versions, uint32_t ttl_secs,
30  DB::Types::Column type,
32  : Base(a_clients, a_executor),
33  column(cid, seq, versions, ttl_secs, type) {
34  }
35 
37  BaseSingleColumn(const Clients::Ptr& a_clients,
38  const cid_t cid, DB::Types::KeySeq seq,
39  uint32_t versions, uint32_t ttl_secs,
40  DB::Types::Column type,
41  const StaticBuffer& buffer)
42  : Base(a_clients),
43  column(cid, seq, versions, ttl_secs, type, buffer) {
44  }
45 
46  virtual ~BaseSingleColumn() noexcept { }
47 
48 
49  virtual bool requires_commit() noexcept override {
50  return !error() && !column.error() && !column.empty();
51  }
52 
53  virtual bool empty() noexcept override {
54  return column.empty();
55  }
56 
57  virtual size_t size_bytes() noexcept override {
58  return column.size_bytes();
59  }
60 
61  virtual void next(Base::Colms& cols) noexcept override {
62  cols.clear();
63  if(requires_commit())
64  cols.push_back(&column);
65  }
66 
67  virtual Base::Column* next(cid_t cid) noexcept override{
68  return cid == column.cid && requires_commit() ? &column : nullptr;
69  }
70 
71  virtual void error(cid_t cid, int err) noexcept override {
72  if(cid == column.cid)
73  column.error(err);
74  else
76  }
77 
78 
80  size_t size() noexcept {
81  return column.size();
82  }
83 
84 };
85 
86 
87 }}}}}
88 
89 
90 
91 #endif // swcdb_db_client_Query_Update_Handlers_BaseSingleColumn_h
SWC::client::Query::Update::Handlers::ColumnMutable::error
virtual void error(int err) noexcept override
Definition: BaseColumnMutable.h:90
SWC::client::Query::Update::Handlers::ColumnMutable::empty
virtual bool empty() noexcept override
Definition: BaseColumnMutable.cc:25
SWC::client::Clients::DEFAULT
@ DEFAULT
Definition: Clients.h:61
SWC::client::Query::Update::Handlers::BaseSingleColumn::column
ColumnMutable column
Definition: BaseSingleColumn.h:24
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::client::Query::Update::Handlers::ColumnMutable::size_bytes
virtual size_t size_bytes() noexcept override
Definition: BaseColumnMutable.cc:35
SWC::DB::Types::Column
Column
Definition: Column.h:18
SWC::client::Query::Update::Handlers::BaseSingleColumn::BaseSingleColumn
SWC_CAN_INLINE BaseSingleColumn(const Clients::Ptr &a_clients, const cid_t cid, DB::Types::KeySeq seq, uint32_t versions, uint32_t ttl_secs, DB::Types::Column type, const StaticBuffer &buffer)
Definition: BaseSingleColumn.h:37
SWC::client::Query::Update::Handlers::BaseSingleColumn::next
virtual Base::Column * next(cid_t cid) noexcept override
Definition: BaseSingleColumn.h:67
SWC::client::Query::Update::Handlers::ColumnMutable::size
virtual size_t size() noexcept override
Definition: BaseColumnMutable.cc:30
SWC::client::Query::Update::Handlers::ColumnMutable::cid
cid_t cid
Definition: BaseColumnMutable.h:25
SWC::client::Query::Update::Handlers::BaseSingleColumn::empty
virtual bool empty() noexcept override
Definition: BaseSingleColumn.h:53
BaseColumnMutable.h
SWC::DB::Types::KeySeq
KeySeq
Definition: KeySeq.h:13
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::client::Query::Update::Handlers::BaseSingleColumn::next
virtual void next(Base::Colms &cols) noexcept override
Definition: BaseSingleColumn.h:61
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Core::Buffer
Definition: Buffer.h:18
SWC::client::Clients::Flag
Flag
Definition: Clients.h:60
SWC::client::Query::Update::Handlers::Base::Column
Definition: Base.h:30
SWC::client::Query::Update::Handlers::BaseSingleColumn
Definition: BaseSingleColumn.h:18
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::client::Query::Update::Handlers::Base::error
virtual int error() noexcept
Definition: Base.h:159
SWC::Core::Vector
Definition: Vector.h:14
SWC::client::Query::Update::Handlers::BaseSingleColumn::error
virtual void error(cid_t cid, int err) noexcept override
Definition: BaseSingleColumn.h:71
SWC::client::Query::Update::Handlers::BaseSingleColumn::Ptr
std::shared_ptr< BaseSingleColumn > Ptr
Definition: BaseSingleColumn.h:20
SWC::client::Query::Update::Handlers::ColumnMutable
Definition: BaseColumnMutable.h:20
SWC::client::Query::Update::Handlers::BaseSingleColumn::~BaseSingleColumn
virtual ~BaseSingleColumn() noexcept
Definition: BaseSingleColumn.h:46
SWC::client::Query::Update::Handlers::BaseSingleColumn::size
SWC_CAN_INLINE size_t size() noexcept
Definition: BaseSingleColumn.h:80
SWC::client::Query::Update::Handlers::BaseSingleColumn::BaseSingleColumn
SWC_CAN_INLINE BaseSingleColumn(const Clients::Ptr &a_clients, const cid_t cid, DB::Types::KeySeq seq, uint32_t versions, uint32_t ttl_secs, DB::Types::Column type, Clients::Flag a_executor=Clients::DEFAULT)
Definition: BaseSingleColumn.h:27
SWC::client::Query::Update::Handlers::BaseSingleColumn::requires_commit
virtual bool requires_commit() noexcept override
Definition: BaseSingleColumn.h:49
SWC::client::Query::Update::Handlers::BaseSingleColumn::size_bytes
virtual size_t size_bytes() noexcept override
Definition: BaseSingleColumn.h:57
SWC::Error::CLIENT_MISMATCHED_CID
@ CLIENT_MISMATCHED_CID
Definition: Error.h:126
SWC::client::Query::Update::Handlers::Base
Definition: Base.h:25