SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
CheckMeta.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 Ranger { namespace Query { namespace Select {
11 
12 
14 void CheckMeta::run(const RangePtr& range,
15  const Callback::RangeLoad::Ptr& req) {
16  Ptr hdlr(new CheckMeta(range, req));
17  hdlr->scan(range->cfg->key_seq, hdlr->cid, hdlr->spec);
18 }
19 
22  const Callback::RangeLoad::Ptr& a_req)
23  : client::Query::Select::Handlers::BaseSingleColumn(
24  Env::Clients::get(), a_range->cfg->meta_cid),
25  range(a_range), req(a_req), spec(DB::Types::Column::SERIAL) {
26  auto& key_intval = spec.key_intervals.add();
27  key_intval.start.reserve(2);
28  key_intval.start.add(std::to_string(range->cfg->cid), Condition::EQ);
29  key_intval.start.add("", Condition::FIP);
30 
32  fields.add(
34  0, Condition::EQ, range->rid));
35  fields.encode(spec.values.add());
36 }
37 
38 bool CheckMeta::valid() noexcept {
39  return !state_error && !range->state_unloading();
40 }
41 
42 void CheckMeta::response(int err) {
43  if(err) {
44  int at = Error::OK;
46  }
47  profile.finished();
48 
49  struct Task {
50  Ptr hdlr;
52  Task(Ptr&& a_hdlr) noexcept : hdlr(std::move(a_hdlr)) { }
54  Task(Task&& other) noexcept : hdlr(std::move(other.hdlr)) { }
55  Task(const Task&) = delete;
56  Task& operator=(Task&&) = delete;
57  Task& operator=(const Task&) = delete;
58  ~Task() noexcept { }
59  void operator()() { hdlr->range->check_meta(hdlr); }
60  };
62  Task(std::dynamic_pointer_cast<CheckMeta>(shared_from_this())));
63 }
64 
65 
66 
67 }}}}
SWC::Core::AtomicBase::compare_exchange_weak
constexpr SWC_CAN_INLINE bool compare_exchange_weak(T &at, T value) noexcept
Definition: Atomic.h:52
SWC::Ranger::Query::Select::CheckMeta::valid
bool valid() noexcept override
Definition: CheckMeta.cc:38
SWC::DB::Specs::Interval::key_intervals
KeyIntervals key_intervals
Definition: SpecsInterval.h:239
SWC::DB::Specs::Interval::values
Values values
Definition: SpecsInterval.h:240
SWC::DB::Specs::KeyInterval::start
Key start
Definition: SpecsKeyIntervals.h:19
SWC::DB::Specs::Serial::Value::Fields::add
void add(Field::Ptr &&field)
Definition: SpecsValueSerialFields.cc:724
SWC::DB::Specs::Serial::Value::Fields
Definition: SpecsValueSerialFields.h:335
SWC::Ranger::Query::Select::CheckMeta::range
RangePtr range
Definition: CheckMeta.h:35
SWC::Ranger::Query::Select::CheckMeta::req
Callback::RangeLoad::Ptr req
Definition: CheckMeta.h:36
SWC::Ranger::Query::Select::CheckMeta::response
void response(int err) override
Definition: CheckMeta.cc:42
SWC::client::Query::Select::Handlers::Base::operator=
Base & operator=(const Base &)=delete
CheckMeta.h
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC::Ranger::RangePtr
std::shared_ptr< Range > RangePtr
Definition: Columns.h:15
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Ranger::Query::Select::CheckMeta::run
static void run(const RangePtr &range, const Callback::RangeLoad::Ptr &req)
Definition: CheckMeta.cc:14
SWC::Condition::FIP
@ FIP
Definition: Comparators.h:75
SWC::DB::Specs::KeyIntervals::add
KeyInterval & add()
Definition: SpecsKeyIntervals.cc:28
SWC::Ranger::Column
Definition: Column.h:19
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Ranger::Query::Select::CheckMeta::spec
DB::Specs::Interval spec
Definition: CheckMeta.h:37
SWC::Condition::EQ
@ EQ
Definition: Comparators.h:32
SWC::DB::Specs::Serial::Value::Field_INT64::make
static SWC_CAN_INLINE Field::Ptr make(uint24_t fid, Condition::Comp comp, int64_t value)
Definition: SpecsValueSerialFields.h:81
SWC::client::Query::Profiling::finished
SWC_CAN_INLINE void finished() noexcept
Definition: Profiling.h:127
SWC::client::Query::Select::Handlers::Base::Ptr
std::shared_ptr< Base > Ptr
Definition: Base.h:28
SWC::DB::Specs::Values::add
Value & add(Condition::Comp comp=Condition::EQ)
Definition: SpecsValues.cc:24
SWC::Ranger::Query::Select::CheckMeta::CheckMeta
CheckMeta(const RangePtr &range, const Callback::RangeLoad::Ptr &req)
Definition: CheckMeta.cc:21
SWC::client::Query::Select::Handlers::Base::state_error
Core::Atomic< int > state_error
Definition: Base.h:32
SWC::Ranger::Callback::RangeLoad::Ptr
std::shared_ptr< RangeLoad > Ptr
Definition: RangeLoad.h:16
SWC::Env::Rgr::post
static SWC_CAN_INLINE void post(T_Handler &&handler)
Definition: RangerEnv.h:114
SWC::Core::to_string
SWC_CAN_INLINE std::string to_string(const BitFieldInt< T, SZ > &v)
Definition: BitFieldInt.h:263
SWC::client::Query::Select::Handlers::Base::profile
Profiling profile
Definition: Base.h:31
SWC::Core::Vector::reserve
SWC_CAN_INLINE void reserve(size_type cap)
Definition: Vector.h:288
SWC::DB::Specs::Serial::Value::Fields::encode
void encode(Specs::Value &value) const
Definition: SpecsValueSerialFields.cc:735