SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnsUnload.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 
7 namespace SWC { namespace Ranger { namespace Callback {
8 
9 
12  const Comm::Event::Ptr& ev,
13  bool a_completely,
14  cid_t a_cid_begin, cid_t a_cid_end) noexcept
16  completely(a_completely),
17  cid_begin(a_cid_begin), cid_end(a_cid_end),
18  m_mutex(), m_cols(), m_rsp_params() {
19 }
20 
21 void ColumnsUnload::add(const ColumnPtr& col) {
22  m_cols.push_back(col);
23 }
24 
26  if(m_cols.empty()) {
27  complete();
28  } else {
30  for(auto& col : m_cols)
31  col->add_managing(
32  std::dynamic_pointer_cast<ManageBase>(shared_from_this()));
33  }
34 }
35 
37  if(!range->deleted()) {
39  m_rsp_params.columns[range->cfg->cid].push_back(range->rid);
40  }
41 }
42 
44  {
46  auto it = std::find(m_cols.cbegin(), m_cols.cend(), col);
47  if(it != m_cols.cend())
48  m_cols.erase(it);
49  if(!m_cols.empty())
50  return;
51  }
52  complete();
53 }
54 
58  std::dynamic_pointer_cast<ColumnsUnload>(shared_from_this())
59  );
61  if(!m_cols.empty())
62  cbp->header.flags |= Comm::Header::FLAG_RESPONSE_PARTIAL_BIT;
63  m_conn->send_response(cbp);
64 
65  m_rsp_params.columns.clear();
66  if(!m_cols.empty())
67  run();
68 }
69 
70 
71 }}}
SWC::Core::Vector::erase
SWC_CAN_INLINE iterator erase(size_type offset) noexcept(_NoExceptMoveAssign &&_NoExceptDestructor)
Definition: Vector.h:464
SWC::Ranger::Callback::ColumnsUnload::complete
virtual void complete()
Definition: ColumnsUnload.cc:55
SWC::Ranger::Callback::ManageBase
Definition: ManageBase.h:20
SWC::Comm::ResponseCallback::m_ev
Event::Ptr m_ev
Definition: ResponseCallback.h:42
SWC::Env::Rgr::columns
static SWC_CAN_INLINE Ranger::Columns * columns() noexcept
Definition: RangerEnv.h:144
SWC::Core::MutexSptd::scope
Definition: MutexSptd.h:96
SWC::Comm::ResponseCallback::m_conn
ConnHandlerPtr m_conn
Definition: ResponseCallback.h:41
SWC::Comm::Header::FLAG_RESPONSE_PARTIAL_BIT
static const uint8_t FLAG_RESPONSE_PARTIAL_BIT
Definition: Header.h:29
SWC::Ranger::ColumnPtr
std::shared_ptr< Column > ColumnPtr
Definition: Columns.h:13
SWC::Core::Vector::empty
constexpr SWC_CAN_INLINE bool empty() const noexcept
Definition: Vector.h:168
SWC::Ranger::RangePtr
std::shared_ptr< Range > RangePtr
Definition: Columns.h:15
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Ranger::Callback::ColumnsUnload::m_rsp_params
Comm::Protocol::Rgr::Params::ColumnsUnloadRsp m_rsp_params
Definition: ColumnsUnload.h:45
SWC::Ranger::Callback::ColumnsUnload::cid_end
const cid_t cid_end
Definition: ColumnsUnload.h:24
SWC::Ranger::Callback::ManageBase::COLUMNS_UNLOAD
@ COLUMNS_UNLOAD
Definition: ManageBase.h:29
SWC::Ranger::Callback::ColumnsUnload::run
void run() override
Definition: ColumnsUnload.cc:25
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Ranger::Callback::ColumnsUnload::ColumnsUnload
ColumnsUnload(const Comm::ConnHandlerPtr &conn, const Comm::Event::Ptr &ev, bool completely, cid_t cid_begin, cid_t cid_end) noexcept
Definition: ColumnsUnload.cc:11
SWC::Ranger::Callback::ColumnsUnload::add
void add(const ColumnPtr &col)
Definition: ColumnsUnload.cc:21
SWC::Comm::Buffers::make
static SWC_CAN_INLINE Ptr make(uint32_t reserve=0)
Definition: Buffers.h:27
SWC::Ranger::Callback::ColumnsUnload::m_mutex
Core::MutexSptd m_mutex
Definition: ColumnsUnload.h:43
SWC::Core::Vector::cend
constexpr SWC_CAN_INLINE const_iterator cend() const noexcept
Definition: Vector.h:232
SWC::Ranger::Columns::unload
bool unload(cid_t cid_begin, cid_t cid_end, Callback::ColumnsUnload::Ptr req)
Definition: Columns.cc:110
SWC::Ranger::Callback::ColumnsUnload::m_cols
Core::Vector< ColumnPtr > m_cols
Definition: ColumnsUnload.h:44
SWC::Ranger::Callback::ColumnsUnload::cid_begin
const cid_t cid_begin
Definition: ColumnsUnload.h:23
SWC::Comm::Protocol::Rgr::Params::ColumnsUnloadRsp::columns
std::unordered_map< cid_t, rids_t > columns
Definition: ColumnsUnload.h:63
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Core::Vector::push_back
SWC_CAN_INLINE void push_back(ArgsT &&... args)
Definition: Vector.h:331
SWC::Core::Vector::cbegin
constexpr SWC_CAN_INLINE const_iterator cbegin() const noexcept
Definition: Vector.h:216
SWC::Ranger::Callback::ColumnsUnload::unloaded
virtual void unloaded(RangePtr range)
Definition: ColumnsUnload.cc:36