SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
BaseUnorderedMap.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 
17  bool reached_limit,
18  DB::Specs::Interval& interval) {
20  size_t recved = m_cells.add(buffer.base, buffer.size);
21 
22  if(interval.flags.limit) {
23  if(interval.flags.limit <= recved) {
24  interval.flags.limit = 0;
25  return false;
26  }
27  interval.flags.limit -= recved;
28  }
29 
30  if(reached_limit) {
31  auto last = m_cells.back();
32  interval.offset_key.copy(last->key);
33  interval.offset_rev = last->get_timestamp();
34  }
35  return true;
36 }
37 
40  cells.take(m_cells);
41 }
42 
45  return m_cells.size();
46 }
47 
50  return m_cells.size_bytes();
51 }
52 
55  return m_cells.empty();
56 }
57 
60  m_cells.free();
61 }
62 
63 
64 void BaseUnorderedMap::Rsp::error(int err) noexcept {
66  m_err = err;
67 }
68 
71  return m_err;
72 }
73 
74 
75 
77  size_t sz = 0;
79  for(const auto& col : m_columns)
80  sz += col.second->get_size_bytes();
81  return sz;
82 }
83 
86  m_columns.emplace(cid, new Rsp());
87 }
88 
91  auto& c = m_columns[cid];
92  if(!c)
93  c.reset(new Rsp());
94  return c;
95 }
96 
97 bool BaseUnorderedMap::empty() noexcept {
99  for(const auto& col : m_columns)
100  if(!col.second->empty())
101  return false;
102  return true;
103 }
104 
106  cids_t list;
108  list.reserve(m_columns.size());
109  for(const auto& col : m_columns)
110  list.push_back(col.first);
111  return list;
112 }
113 
116  m_columns.erase(cid);
117 }
118 
119 
120 
121 
122 }}}}}
SWC::client::Query::Select::Handlers::BaseUnorderedMap::get_size_bytes
virtual size_t get_size_bytes() noexcept override
Definition: BaseUnorderedMap.cc:76
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::add_cells
bool add_cells(StaticBuffer &buffer, bool reached_limit, DB::Specs::Interval &interval)
Definition: BaseUnorderedMap.cc:16
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp
Definition: BaseUnorderedMap.h:58
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::free
void free()
Definition: BaseUnorderedMap.cc:58
SWC::client::Query::Select::Handlers::BaseUnorderedMap::empty
bool empty() noexcept
Definition: BaseUnorderedMap.cc:97
SWC::Core::MutexSptd::scope
Definition: MutexSptd.h:96
BaseUnorderedMap.h
SWC::DB::Cells::Result
Definition: Result.h:16
SWC::client::Query::Select::Handlers::BaseUnorderedMap::m_columns
std::unordered_map< cid_t, Rsp::Ptr > m_columns
Definition: BaseUnorderedMap.h:108
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::empty
bool empty() noexcept
Definition: BaseUnorderedMap.cc:53
SWC::client::Query::Select::Handlers::BaseUnorderedMap::get_cids
cids_t get_cids()
Definition: BaseUnorderedMap.cc:105
SWC::client::Query::Select::Handlers::BaseUnorderedMap::m_mutex
Core::MutexSptd m_mutex
Definition: BaseUnorderedMap.h:107
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::get_size_bytes
size_t get_size_bytes() noexcept
Definition: BaseUnorderedMap.cc:48
SWC::Core::Buffer::base
value_type * base
Definition: Buffer.h:131
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
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::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::get_cells
void get_cells(DB::Cells::Result &cells)
Definition: BaseUnorderedMap.cc:38
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::Core::Vector< cid_t, cid_t >
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::m_mutex
Core::MutexSptd m_mutex
Definition: BaseUnorderedMap.h:85
SWC::DB::Specs::Interval
Definition: SpecsInterval.h:25
SWC::client::Query::Select::Handlers::BaseUnorderedMap::remove
void remove(const cid_t cid)
Definition: BaseUnorderedMap.cc:114
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::BaseUnorderedMap::Rsp::get_size
size_t get_size() noexcept
Definition: BaseUnorderedMap.cc:43
SWC::client::Query::Select::Handlers::BaseUnorderedMap::add_column
void add_column(const cid_t cid)
Definition: BaseUnorderedMap.cc:84
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::error
int error() noexcept
Definition: BaseUnorderedMap.cc:69
SWC::client::Query::Select::Handlers::BaseUnorderedMap::get_columnn
Rsp::Ptr & get_columnn(const cid_t cid)
Definition: BaseUnorderedMap.cc:89
SWC::Core::Vector::push_back
SWC_CAN_INLINE void push_back(ArgsT &&... args)
Definition: Vector.h:331
SWC::DB::Specs::Flags::limit
uint64_t limit
Definition: SpecsFlags.h:142
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::Ptr
std::shared_ptr< Rsp > Ptr
Definition: BaseUnorderedMap.h:60
SWC::client::Query::Select::Handlers::BaseUnorderedMap::Rsp::m_cells
DB::Cells::Result m_cells
Definition: BaseUnorderedMap.h:86
SWC::Core::Vector::reserve
SWC_CAN_INLINE void reserve(size_type cap)
Definition: Vector.h:288
SWC::DB::Cells::Result::add
void add(const Cell &cell, bool no_value=false)
Definition: Result.h:109