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.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_BaseUnorderedMap_h
7 #define swcdb_db_client_Query_Update_Handlers_BaseUnorderedMap_h
8 
9 
11 
12 
13 namespace SWC { namespace client { namespace Query { namespace Update {
14 
15 namespace Handlers {
16 
17 
19  : private std::unordered_map<cid_t, ColumnMutable::Ptr>,
20  public Base {
21  public:
22  typedef std::shared_ptr<BaseUnorderedMap> Ptr;
23  typedef std::unordered_map<cid_t, ColumnMutable::Ptr> Map;
24 
26  BaseUnorderedMap(const Clients::Ptr& a_clients,
27  Clients::Flag a_executor=Clients::DEFAULT) noexcept
28  : Base(a_clients, a_executor),
29  m_mutex() {
30  }
31 
32  virtual ~BaseUnorderedMap() noexcept { }
33 
34 
35  virtual bool requires_commit() noexcept override;
36 
37  virtual bool empty() noexcept override;
38 
39  virtual size_t size_bytes() noexcept override;
40 
41  virtual void next(Base::Colms& cols) noexcept override;
42 
43  virtual Base::Column* next(cid_t cid) noexcept override;
44 
45  virtual void error(cid_t cid, int err) noexcept override;
46 
47 
49  ColumnMutable::Ptr& create(const DB::Schema::Ptr& schema) {
50  return create(
51  schema->cid, schema->col_seq,
52  schema->cell_versions, schema->cell_ttl,
53  schema->col_type);
54  }
55 
57  uint32_t versions, uint32_t ttl_secs,
58  DB::Types::Column type);
59 
60  bool exists(const cid_t cid) noexcept;
61 
62  void add(const cid_t cid, const DB::Cells::Cell& cell,
63  bool finalized=false);
64 
65  ColumnMutable::Ptr get(const cid_t cid) noexcept;
66 
67  Base::Column* get_base_ptr(cid_t cid) noexcept;
68 
69  size_t size() noexcept;
70 
71 
72  private:
73  Core::MutexSptd m_mutex;
74 
75 };
76 
77 
78 
79 }}}}}
80 
81 
82 #ifdef SWC_IMPL_SOURCE
84 #endif
85 
86 
87 #endif // swcdb_db_client_Query_Update_Handlers_BaseUnorderedMap_h
SWC::client::Query::Update::Handlers::BaseUnorderedMap::size
size_t size() noexcept
Definition: BaseUnorderedMap.cc:31
SWC::client::Query::Update::Handlers::BaseUnorderedMap::empty
virtual bool empty() noexcept override
Definition: BaseUnorderedMap.cc:23
SWC::client::Clients::DEFAULT
@ DEFAULT
Definition: Clients.h:61
SWC::client::Query::Update::Handlers::BaseUnorderedMap::BaseUnorderedMap
SWC_CAN_INLINE BaseUnorderedMap(const Clients::Ptr &a_clients, Clients::Flag a_executor=Clients::DEFAULT) noexcept
Definition: BaseUnorderedMap.h:26
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::client::Query::Update::Handlers::BaseUnorderedMap
Definition: BaseUnorderedMap.h:20
SWC::client::Query::Update::Handlers::BaseUnorderedMap::exists
bool exists(const cid_t cid) noexcept
Definition: BaseUnorderedMap.cc:83
SWC::client::Query::Update::Handlers::BaseUnorderedMap::~BaseUnorderedMap
virtual ~BaseUnorderedMap() noexcept
Definition: BaseUnorderedMap.h:32
SWC::DB::Types::Column
Column
Definition: Column.h:18
BaseUnorderedMap.cc
SWC::client::Query::Update::Handlers::BaseUnorderedMap::m_mutex
Core::MutexSptd m_mutex
Definition: BaseUnorderedMap.h:73
SWC::client::Query::Update::Handlers::BaseUnorderedMap::next
virtual void next(Base::Colms &cols) noexcept override
Definition: BaseUnorderedMap.cc:47
SWC::DB::Cells::Cell
Definition: Cell.h:92
SWC::client::Query::Update::Handlers::BaseUnorderedMap::Map
std::unordered_map< cid_t, ColumnMutable::Ptr > Map
Definition: BaseUnorderedMap.h:23
SWC::client::Query::Update::Handlers::Base::Colms
Core::Vector< Column * > Colms
Definition: Base.h:107
SWC::client::Query::Update::Handlers::BaseUnorderedMap::get
ColumnMutable::Ptr get(const cid_t cid) noexcept
Definition: BaseUnorderedMap.cc:102
BaseColumnMutable.h
SWC::client::Query::Update::Handlers::BaseUnorderedMap::requires_commit
virtual bool requires_commit() noexcept override
Definition: BaseUnorderedMap.cc:15
SWC::DB::Types::KeySeq
KeySeq
Definition: KeySeq.h:13
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::Base::Base
SWC_CAN_INLINE Base(const Clients::Ptr &a_clients, Clients::Flag a_executor=Clients::Flag::DEFAULT) noexcept
Definition: Base.h:122
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::BaseUnorderedMap::size_bytes
virtual size_t size_bytes() noexcept override
Definition: BaseUnorderedMap.cc:39
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::client::Query::Update::Handlers::BaseUnorderedMap::add
void add(const cid_t cid, const DB::Cells::Cell &cell, bool finalized=false)
Definition: BaseUnorderedMap.cc:88
SWC::client::Query::Update::Handlers::BaseUnorderedMap::create
SWC_CAN_INLINE ColumnMutable::Ptr & create(const DB::Schema::Ptr &schema)
Definition: BaseUnorderedMap.h:49
SWC::client::Query::Update::Handlers::BaseUnorderedMap::get_base_ptr
Base::Column * get_base_ptr(cid_t cid) noexcept
Definition: BaseUnorderedMap.cc:108
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::client::Query::Update::Handlers::BaseUnorderedMap::Ptr
std::shared_ptr< BaseUnorderedMap > Ptr
Definition: BaseUnorderedMap.h:22
SWC::client::Query::Update::Handlers::Base
Definition: Base.h:25