SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
Clients.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 namespace SWC { namespace client {
10 
11 
12 
14  const Config::Settings& settings,
15  const Comm::IoContextPtr& io_ctx,
16  const ContextManager::Ptr& mngr_ctx,
17  const ContextRanger::Ptr& rgr_ctx,
18  const ContextBroker::Ptr& bkr_ctx) {
19  return Clients::Ptr(new Clients(
20  settings, io_ctx, mngr_ctx, rgr_ctx, bkr_ctx));
21 }
22 
24  const Config::Settings& settings,
25  const Comm::IoContextPtr& io_ctx,
26  const ContextManager::Ptr& mngr_ctx,
27  const ContextRanger::Ptr& rgr_ctx) {
28  return Clients::Ptr(new Clients(
29  settings, io_ctx, mngr_ctx, rgr_ctx));
30 }
31 
33  const Config::Settings& settings,
34  const Comm::IoContextPtr& io_ctx,
35  const ContextBroker::Ptr& bkr_ctx) {
36  return Clients::Ptr(new Clients(
37  settings, io_ctx, bkr_ctx));
38 }
39 
40 
41 
43  const Comm::IoContextPtr& a_io_ctx,
44  const ContextManager::Ptr& mngr_ctx,
45  const ContextRanger::Ptr& rgr_ctx,
46  const ContextBroker::Ptr& bkr_ctx)
47  : running(true), flags(Flag::DEFAULT | Flag::BROKER | Flag::SCHEMA),
48  cfg_send_buff_sz(
49  settings.get<SWC::Config::Property::Value_int32_g>(
50  "swc.client.send.buffer")),
51  cfg_send_ahead(
52  settings.get<SWC::Config::Property::Value_uint8_g>(
53  "swc.client.send.ahead")),
54  cfg_send_timeout(
55  settings.get<SWC::Config::Property::Value_int32_g>(
56  "swc.client.send.timeout")),
57  cfg_send_timeout_ratio(
58  settings.get<SWC::Config::Property::Value_int32_g>(
59  "swc.client.send.timeout.bytes.ratio")),
60 
61  cfg_recv_buff_sz(
62  settings.get<SWC::Config::Property::Value_int32_g>(
63  "swc.client.recv.buffer")),
64  cfg_recv_ahead(
65  settings.get<SWC::Config::Property::Value_uint8_g>(
66  "swc.client.recv.ahead")),
67  cfg_recv_timeout(
68  settings.get<SWC::Config::Property::Value_int32_g>(
69  "swc.client.recv.timeout")),
70 
71  io_ctx(a_io_ctx),
72  schemas(
73  this,
74  settings.get<Config::Property::Value_int32_g>(
75  "swc.client.schema.expiry")),
76  managers(settings, io_ctx, mngr_ctx),
77  rangers(settings, io_ctx, rgr_ctx),
78  brokers(settings, io_ctx, bkr_ctx) {
79 }
80 
82  const Comm::IoContextPtr& a_io_ctx,
83  const ContextManager::Ptr& mngr_ctx,
84  const ContextRanger::Ptr& rgr_ctx)
85  : running(true), flags(Flag::DEFAULT),
86  cfg_send_buff_sz(
87  settings.get<SWC::Config::Property::Value_int32_g>(
88  "swc.client.send.buffer")),
89  cfg_send_ahead(
90  settings.get<SWC::Config::Property::Value_uint8_g>(
91  "swc.client.send.ahead")),
92  cfg_send_timeout(
93  settings.get<SWC::Config::Property::Value_int32_g>(
94  "swc.client.send.timeout")),
95  cfg_send_timeout_ratio(
96  settings.get<SWC::Config::Property::Value_int32_g>(
97  "swc.client.send.timeout.bytes.ratio")),
98 
99  cfg_recv_buff_sz(
100  settings.get<SWC::Config::Property::Value_int32_g>(
101  "swc.client.recv.buffer")),
102  cfg_recv_ahead(
103  settings.get<SWC::Config::Property::Value_uint8_g>(
104  "swc.client.recv.ahead")),
105  cfg_recv_timeout(
106  settings.get<SWC::Config::Property::Value_int32_g>(
107  "swc.client.recv.timeout")),
108 
109  io_ctx(a_io_ctx),
110  schemas(
111  this,
112  settings.get<Config::Property::Value_int32_g>(
113  "swc.client.schema.expiry")),
114  managers(settings, io_ctx, mngr_ctx),
115  rangers(settings, io_ctx, rgr_ctx),
116  brokers() {
117 }
118 
120  const Comm::IoContextPtr& a_io_ctx,
121  const ContextBroker::Ptr& bkr_ctx)
122  : running(true), flags(Flag::BROKER),
123  cfg_send_buff_sz(
124  settings.get<SWC::Config::Property::Value_int32_g>(
125  "swc.client.send.buffer")),
126  cfg_send_ahead(
127  settings.get<SWC::Config::Property::Value_uint8_g>(
128  "swc.client.send.ahead")),
129  cfg_send_timeout(
130  settings.get<SWC::Config::Property::Value_int32_g>(
131  "swc.client.send.timeout")),
132  cfg_send_timeout_ratio(
133  settings.get<SWC::Config::Property::Value_int32_g>(
134  "swc.client.send.timeout.bytes.ratio")),
135 
136  cfg_recv_buff_sz(
137  settings.get<SWC::Config::Property::Value_int32_g>(
138  "swc.client.recv.buffer")),
139  cfg_recv_ahead(
140  settings.get<SWC::Config::Property::Value_uint8_g>(
141  "swc.client.recv.ahead")),
142  cfg_recv_timeout(
143  settings.get<SWC::Config::Property::Value_int32_g>(
144  "swc.client.recv.timeout")),
145 
146  io_ctx(a_io_ctx),
147  schemas(
148  this,
149  settings.get<Config::Property::Value_int32_g>(
150  "swc.client.schema.expiry")),
151  managers(),
152  rangers(),
153  brokers(settings, io_ctx, bkr_ctx) {
154 }
155 
156 Clients::~Clients() noexcept { }
157 
159  running.store(false);
160 
161  if(brokers.queues)
162  brokers.queues->stop();
163  if(rangers.queues)
164  rangers.queues->stop();
165  if(managers.queues)
166  managers.queues->stop();
167 }
168 
170  stop_services();
171  stop_io();
172 }
173 
174 
175 
176 } // namespace client
177 
178 
179 
180 namespace Env {
181 
182 void Clients::init(const client::Clients::Ptr& clients) {
183  m_env.reset(new Clients(clients));
184 }
185 
186 }
187 
188 } //namespace SWC
189 
SWC::client::Clients::brokers
Brokers brokers
Definition: Clients.h:282
Clients.h
SWC::client::Managers::queues
const Comm::client::ConnQueuesPtr queues
Definition: Managers.h:227
SWC::client::Brokers::queues
const Comm::client::ConnQueuesPtr queues
Definition: Brokers.h:60
SWC::client::ContextManager::Ptr
std::shared_ptr< ContextManager > Ptr
Definition: ContextManager.h:18
SWC::client::Clients::io_ctx
Comm::IoContextPtr io_ctx
Definition: Clients.h:278
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::Comm::IoContextPtr
std::shared_ptr< IoContext > IoContextPtr
Definition: IoContext.h:16
SWC::client::ContextBroker::Ptr
std::shared_ptr< ContextBroker > Ptr
Definition: ContextBroker.h:18
SWC::FS::BROKER
@ BROKER
Definition: FileSystem.h:24
SWC::client::Clients::rangers
Rangers rangers
Definition: Clients.h:281
SWC::Env::Clients::init
static void init(const client::Clients::Ptr &clients)
Definition: Clients.cc:182
SWC::client::Rangers::queues
const Comm::client::ConnQueuesPtr queues
Definition: Rangers.h:32
SWC::Core::AtomicBase::store
constexpr SWC_CAN_INLINE void store(T v) noexcept
Definition: Atomic.h:37
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Env::Clients::Clients
Clients(const client::Clients::Ptr &clients) noexcept
Definition: Clients.h:312
SWC::client::Clients::stop_services
void stop_services()
Definition: Clients.cc:158
SWC::client::Clients::Flag
Flag
Definition: Clients.h:60
SWC::client::Clients::stop_io
void stop_io()
Definition: Clients.h:102
SWC::Config::Settings
Definition: Settings.h:25
SWC::client::Clients::managers
Managers managers
Definition: Clients.h:280
SWC::client::Clients::~Clients
~Clients() noexcept
Definition: Clients.cc:156
SWC::client::ContextRanger::Ptr
std::shared_ptr< ContextRanger > Ptr
Definition: ContextRanger.h:18
SWC::Env::Clients::m_env
static std::shared_ptr< Clients > m_env
Definition: Clients.h:320
SWC::client::Clients::running
Core::AtomicBool running
Definition: Clients.h:266
SWC::client::Clients::make
static Ptr make(const Config::Settings &settings, const Comm::IoContextPtr &io_ctx, const ContextManager::Ptr &mngr_ctx, const ContextRanger::Ptr &rgr_ctx, const ContextBroker::Ptr &bkr_ctx)
Definition: Clients.cc:13
SWC::client::Clients::stop
void stop()
Definition: Clients.cc:169
flags
uint8_t flags
Flags.
Definition: Header.h:55
SWC::client::Clients::Clients
Clients(const Config::Settings &settings, const Comm::IoContextPtr &io_ctx, const ContextManager::Ptr &mngr_ctx, const ContextRanger::Ptr &rgr_ctx, const ContextBroker::Ptr &bkr_ctx)
Definition: Clients.cc:42