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.cc
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 
8 
9 
10 namespace SWC { namespace client { namespace Query { namespace Select {
11 
12 namespace Handlers {
13 
14 
15 void BaseSingleColumn::error(const cid_t _cid, int err) {
16  int at = Error::OK;
18  at, _cid == cid ? err : Error::CLIENT_MISMATCHED_CID);
19 }
20 
22  bool reached_limit,
23  DB::Specs::Interval& interval) {
24  if(_cid != cid) {
25  error(_cid, Error::OK);
26  return false;
27  }
28 
30  size_t recved = m_cells.add(buffer.base, buffer.size);
31 
32  if(interval.flags.limit) {
33  if(interval.flags.limit <= recved) {
34  interval.flags.limit = 0;
35  return false;
36  }
37  interval.flags.limit -= recved;
38  }
39 
40  if(reached_limit) {
41  auto last = m_cells.back();
42  interval.offset_key.copy(last->key);
43  interval.offset_rev = last->get_timestamp();
44  }
45  return true;
46 }
47 
50  return m_cells.size_bytes();
51 }
52 
53 size_t BaseSingleColumn::get_size() noexcept {
55  return m_cells.size();
56 }
57 
58 bool BaseSingleColumn::empty() noexcept {
60  return m_cells.empty();
61 }
62 
65  cells.take(m_cells);
66 }
67 
68 
69 }}}}}
SWC::Core::AtomicBase::compare_exchange_weak
constexpr SWC_CAN_INLINE bool compare_exchange_weak(T &at, T value) noexcept
Definition: Atomic.h:52
BaseSingleColumn.h
SWC::client::Query::Select::Handlers::BaseSingleColumn::m_mutex
Core::MutexSptd m_mutex
Definition: BaseSingleColumn.h:55
SWC::client::Query::Select::Handlers::BaseSingleColumn::get_cells
virtual void get_cells(DB::Cells::Result &cells)
Definition: BaseSingleColumn.cc:63
SWC::Core::MutexSptd::scope
Definition: MutexSptd.h:96
SWC::client::Query::Select::Handlers::BaseSingleColumn::cid
const cid_t cid
Definition: BaseSingleColumn.h:27
SWC::client::Query::Select::Handlers::BaseSingleColumn::error
virtual void error(const cid_t cid, int err)=0
SWC::client::Query::Select::Handlers::BaseSingleColumn::add_cells
virtual bool add_cells(const cid_t _cid, StaticBuffer &buffer, bool reached_limit, DB::Specs::Interval &interval) override
Definition: BaseSingleColumn.cc:21
SWC::DB::Cells::Result
Definition: Result.h:16
SWC::client::Query::Select::Handlers::BaseSingleColumn::empty
virtual bool empty() noexcept
Definition: BaseSingleColumn.cc:58
SWC::client::Query::Select::Handlers::BaseSingleColumn::get_size
virtual size_t get_size() noexcept
Definition: BaseSingleColumn.cc:53
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC::Core::Buffer::base
value_type * base
Definition: Buffer.h:131
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::client::Query::Select::Handlers::BaseSingleColumn::m_cells
DB::Cells::Result m_cells
Definition: BaseSingleColumn.h:56
SWC::Core::Buffer
Definition: Buffer.h:18
SWC::DB::Cells::Result::take
void take(Result &other)
Definition: Result.h:95
SWC::Core::Buffer::size
size_t size
Definition: Buffer.h:130
SWC::DB::Cell::Key::copy
void copy(const Key &other)
Definition: CellKey.h:314
SWC::DB::Specs::Interval::flags
Flags flags
Definition: SpecsInterval.h:242
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::client::Query::Select::Handlers::BaseSingleColumn::get_size_bytes
virtual size_t get_size_bytes() noexcept override
Definition: BaseSingleColumn.cc:48
SWC::DB::Specs::Interval
Definition: SpecsInterval.h:25
SWC::DB::Specs::Interval::offset_rev
int64_t offset_rev
Definition: SpecsInterval.h:245
SWC::DB::Specs::Interval::offset_key
Cell::Key offset_key
Definition: SpecsInterval.h:244
SWC::client::Query::Select::Handlers::Base::state_error
Core::Atomic< int > state_error
Definition: Base.h:32
SWC::DB::Cells::Result::size_bytes
constexpr SWC_CAN_INLINE size_t size_bytes() const noexcept
Definition: Result.h:64
SWC::DB::Specs::Flags::limit
uint64_t limit
Definition: SpecsFlags.h:142
SWC::Error::CLIENT_MISMATCHED_CID
@ CLIENT_MISMATCHED_CID
Definition: Error.h:126
SWC::DB::Cells::Result::add
void add(const Cell &cell, bool no_value=false)
Definition: Result.h:109