SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
BaseColumnMutable.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_BaseColumnMutable_h
7 #define swcdb_db_client_Query_Update_Handlers_BaseColumnMutable_h
8 
9 
11 #include "swcdb/core/MutexSptd.h"
12 #include "swcdb/db/Cells/Mutable.h"
13 
14 
15 namespace SWC { namespace client { namespace Query { namespace Update {
16 
17 namespace Handlers {
18 
19 
20 class ColumnMutable : public Base::Column {
21  public:
22  typedef std::shared_ptr<ColumnMutable> Ptr;
23 
26 
29  uint32_t versions, uint32_t ttl_secs,
30  DB::Types::Column type)
31  : state_error(Error::OK),
32  cid(a_cid),
33  m_mutex(),
34  m_cells(seq, versions, uint64_t(ttl_secs) * 1000000000, type) {
35  }
36 
39  uint32_t versions, uint32_t ttl_secs,
40  DB::Types::Column type,
41  const StaticBuffer& buffer)
42  : state_error(Error::OK),
43  cid(a_cid),
44  m_mutex(),
45  m_cells(seq, versions, uint64_t(ttl_secs) * 1000000000, type, buffer) {
46  }
47 
48  virtual ~ColumnMutable() noexcept { }
49 
50  virtual void print(std::ostream& out) override;
51 
52  virtual cid_t get_cid() const noexcept override {
53  return cid;
54  }
55 
56  virtual DB::Types::KeySeq get_sequence() const noexcept override {
57  return m_cells.key_seq;
58  }
59 
60  virtual bool empty() noexcept override;
61 
62  virtual size_t size() noexcept override;
63 
64  virtual size_t size_bytes() noexcept override;
65 
66  virtual DB::Cell::Key::Ptr get_first_key() override;
67 
68  virtual DB::Cell::Key::Ptr get_key_next(const DB::Cell::Key& eval_key,
69  bool start_key=false) override;
70 
71  virtual size_t add(const DynamicBuffer& cells,
72  const DB::Cell::Key& upto_key,
73  const DB::Cell::Key& from_key,
74  uint32_t skip, bool malformed) override;
75 
76  virtual size_t add(const DynamicBuffer& cells,
77  bool finalized=false) override;
78 
79  virtual void add(const DB::Cells::Cell& cell,
80  bool finalized=false) override;
81 
82  virtual bool get_buff(const DB::Cell::Key& key_start,
83  const DB::Cell::Key& key_end,
84  size_t buff_sz, bool& more,
85  DynamicBuffer& cells_buff) override;
86 
87  virtual bool get_buff(size_t buff_sz, bool& more,
88  DynamicBuffer& cells_buff) override;
89 
90  virtual void error(int err) noexcept override {
91  int at = Error::OK;
93  }
94 
95  virtual int error() noexcept override {
96  return state_error;
97  }
98 
99  private:
102 };
103 
104 
105 
106 
107 }}}}}
108 
109 
110 #ifdef SWC_IMPL_SOURCE
112 #endif
113 
114 
115 #endif // swcdb_db_client_Query_Update_Handlers_BaseColumnMutable_h
SWC::client::Query::Update::Handlers::ColumnMutable::~ColumnMutable
virtual ~ColumnMutable() noexcept
Definition: BaseColumnMutable.h:48
SWC::Core::AtomicBase::compare_exchange_weak
constexpr SWC_CAN_INLINE bool compare_exchange_weak(T &at, T value) noexcept
Definition: Atomic.h:52
SWC::client::Query::Update::Handlers::ColumnMutable::empty
virtual bool empty() noexcept override
Definition: BaseColumnMutable.cc:25
SWC::Core::Atomic< int >
SWC::client::Query::Update::Handlers::ColumnMutable::ColumnMutable
SWC_CAN_INLINE ColumnMutable(const cid_t a_cid, DB::Types::KeySeq seq, uint32_t versions, uint32_t ttl_secs, DB::Types::Column type)
Definition: BaseColumnMutable.h:28
SWC::client::Query::Update::Handlers::ColumnMutable::add
virtual size_t add(const DynamicBuffer &cells, const DB::Cell::Key &upto_key, const DB::Cell::Key &from_key, uint32_t skip, bool malformed) override
Definition: BaseColumnMutable.cc:60
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::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::ColumnMutable::get_cid
virtual cid_t get_cid() const noexcept override
Definition: BaseColumnMutable.h:52
SWC::client::Query::Update::Handlers::ColumnMutable::get_first_key
virtual DB::Cell::Key::Ptr get_first_key() override
Definition: BaseColumnMutable.cc:40
SWC::client::Query::Update::Handlers::ColumnMutable::print
virtual void print(std::ostream &out) override
Definition: BaseColumnMutable.cc:16
SWC::DB::Types::KeySeq
KeySeq
Definition: KeySeq.h:13
SWC::client::Query::Update::Handlers::ColumnMutable::get_key_next
virtual DB::Cell::Key::Ptr get_key_next(const DB::Cell::Key &eval_key, bool start_key=false) override
Definition: BaseColumnMutable.cc:49
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::client::Query::Update::Handlers::ColumnMutable::error
virtual int error() noexcept override
Definition: BaseColumnMutable.h:95
SWC::Core::BufferDyn< StaticBuffer >
SWC::Core::Buffer
Definition: Buffer.h:18
SWC::client::Query::Update::Handlers::ColumnMutable::m_mutex
Core::MutexSptd m_mutex
Definition: BaseColumnMutable.h:100
SWC::client::Query::Update::Handlers::Base::Column
Definition: Base.h:30
BaseColumnMutable.cc
SWC::client::Query::Update::Handlers::ColumnMutable::get_buff
virtual bool get_buff(const DB::Cell::Key &key_start, const DB::Cell::Key &key_end, size_t buff_sz, bool &more, DynamicBuffer &cells_buff) override
Definition: BaseColumnMutable.cc:83
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::DB::Cells::Mutable::key_seq
const Types::KeySeq key_seq
Definition: Mutable.h:71
SWC::client::Query::Update::Handlers::ColumnMutable::m_cells
DB::Cells::Mutable m_cells
Definition: BaseColumnMutable.h:101
MutexSptd.h
SWC::client::Query::Update::Handlers::ColumnMutable::ColumnMutable
SWC_CAN_INLINE ColumnMutable(const cid_t a_cid, DB::Types::KeySeq seq, uint32_t versions, uint32_t ttl_secs, DB::Types::Column type, const StaticBuffer &buffer)
Definition: BaseColumnMutable.h:38
SWC::client::Query::Update::Handlers::ColumnMutable::state_error
Core::Atomic< int > state_error
Definition: BaseColumnMutable.h:24
Base.h
SWC::Core::MutexSptd
Definition: MutexSptd.h:16
SWC::client::Query::Update::Handlers::ColumnMutable::get_sequence
virtual DB::Types::KeySeq get_sequence() const noexcept override
Definition: BaseColumnMutable.h:56
SWC::client::Query::Update::Handlers::ColumnMutable
Definition: BaseColumnMutable.h:20
SWC::client::Query::Update::Handlers::ColumnMutable::Ptr
std::shared_ptr< ColumnMutable > Ptr
Definition: BaseColumnMutable.h:22
SWC::DB::Cells::Mutable
Definition: Mutable.h:21
Mutable.h