SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
MngrEnv.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_manager_MngrEnv_h
7 #define swcdb_manager_MngrEnv_h
8 
9 
11 
13 
16 #include "swcdb/manager/MngrRole.h"
17 #include "swcdb/manager/Rangers.h"
20 
21 
22 namespace SWC { namespace Env {
23 
24 class Mngr final {
25  public:
26 
27  static void init(const Comm::EndPoints& endpoints) {
28  SWC_ASSERT(!m_env);
29  m_env.reset(new Mngr(endpoints));
30  }
31 
33  static Comm::IoContextPtr io() noexcept {
34  return m_env->app_io;
35  }
36 
37  template <typename T_Handler>
39  static void post(T_Handler&& handler) {
40  m_env->app_io->post(std::move(handler));
41  }
42 
45  return m_env->_reporting;
46  }
47 
49  static System::Resources& res() noexcept {
50  return m_env->_resources;
51  }
52 
54  static Manager::Schemas* schemas() noexcept {
55  return &m_env->m_schemas;
56  }
57 
59  static Manager::Columns* columns() noexcept {
60  return &m_env->m_columns;
61  }
62 
64  static Manager::MngrRole* role() noexcept {
65  return &m_env->m_role;
66  }
67 
69  static Manager::Rangers* rangers() noexcept {
70  return &m_env->m_rangers;
71  }
72 
74  static Manager::MngdColumns* mngd_columns() noexcept {
75  return &m_env->m_mngd_columns;
76  }
77 
79  static bool is_shuttingdown() noexcept {
80  return m_env->m_shutting_down;
81  }
82 
83  static void reset() noexcept {
84  m_env = nullptr;
85  }
86 
87  static void stop();
88 
89 
90  Mngr(const Comm::EndPoints& endpoints)
91  : app_io(
92  Comm::IoContext::make(
93  "Manager",
94  SWC::Env::Config::settings()->get_bool(
95  "swc.mngr.concurrency.relative"),
96  SWC::Env::Config::settings()->get_i32("swc.mngr.handlers")
97  )
98  ),
99  cfg_ram_percent_allowed(100, nullptr),
100  cfg_ram_percent_reserved(0, nullptr),
101  cfg_ram_release_rate(100, nullptr),
102  _reporting(
103  SWC::Env::Config::settings()->get_bool("swc.mngr.metrics.enabled")
104  ? new Manager::Metric::Reporting(app_io)
105  : nullptr
106  ),
107  _resources(
108  app_io,
112  _reporting ? &_reporting->system : nullptr,
113  nullptr
114  ),
115  m_schemas(), m_columns(),
116  m_role(app_io, endpoints),
117  m_rangers(app_io),
118  m_mngd_columns(),
119  m_shutting_down(false) {
120  }
121 
122  ~Mngr() noexcept { }
123 
125 
129  private:
130 
131  inline static std::shared_ptr<Mngr> m_env = nullptr;
140 
141 };
142 
143 
144 }} // SWC::Env namespace
145 
146 #include "swcdb/manager/MngrRole.cc"
147 #include "swcdb/manager/Rangers.cc"
152 #include "swcdb/manager/db/Range.cc"
153 
154 
155 namespace SWC { namespace Env {
156 
157 void Mngr::stop() {
158  m_env->m_shutting_down.store(true);
159  if(m_env->_reporting)
160  m_env->_reporting->stop();
161 
162  m_env->m_role.stop();
163 }
164 
165 }}
166 
167 
168 #endif // swcdb_manager_MngrEnv_h
SWC::Env::Mngr
Definition: MngrEnv.h:24
SWC::System::Resources
Definition: Resources.h:50
MngrRole.h
SWC::Core::AtomicBase< bool >
MngdColumns.h
Column.cc
SWC::Manager::Metric::Reporting::Ptr
std::shared_ptr< Reporting > Ptr
Definition: MetricsReporting.h:26
SWC::Env::Mngr::cfg_ram_percent_allowed
SWC::Config::Property::Value_int32_g cfg_ram_percent_allowed
Definition: MngrEnv.h:126
SWC::Env::Mngr::m_env
static std::shared_ptr< Mngr > m_env
Definition: MngrEnv.h:131
SWC::Env::Mngr::post
static SWC_CAN_INLINE void post(T_Handler &&handler)
Definition: MngrEnv.h:39
SWC::Env::Mngr::m_mngd_columns
Manager::MngdColumns m_mngd_columns
Definition: MngrEnv.h:138
SWC::Env::Mngr::m_rangers
Manager::Rangers m_rangers
Definition: MngrEnv.h:137
Rangers.h
Range.cc
Columns.h
SWC::Env::Mngr::~Mngr
~Mngr() noexcept
Definition: MngrEnv.h:122
SWC::Comm::IoContextPtr
std::shared_ptr< IoContext > IoContextPtr
Definition: IoContext.h:16
SWC::Env::Mngr::columns
static SWC_CAN_INLINE Manager::Columns * columns() noexcept
Definition: MngrEnv.h:59
SWC::Manager::Schemas
Definition: Schemas.h:16
SWC::Env::Config
Definition: Settings.h:103
SWC::Env::Mngr::is_shuttingdown
static SWC_CAN_INLINE bool is_shuttingdown() noexcept
Definition: MngrEnv.h:79
SWC::Env::Mngr::_reporting
Manager::Metric::Reporting::Ptr _reporting
Definition: MngrEnv.h:132
SWC::Env::Mngr::_resources
System::Resources _resources
Definition: MngrEnv.h:133
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Env::Mngr::Mngr
Mngr(const Comm::EndPoints &endpoints)
Definition: MngrEnv.h:90
SWC::Env::Mngr::mngd_columns
static SWC_CAN_INLINE Manager::MngdColumns * mngd_columns() noexcept
Definition: MngrEnv.h:74
SWC::Env::Mngr::m_schemas
Manager::Schemas m_schemas
Definition: MngrEnv.h:134
SWC::Env::Mngr::m_columns
Manager::Columns m_columns
Definition: MngrEnv.h:135
SWC::Env::Mngr::metrics_track
static SWC_CAN_INLINE Manager::Metric::Reporting::Ptr & metrics_track() noexcept
Definition: MngrEnv.h:44
SWC::Env::Mngr::res
static SWC_CAN_INLINE System::Resources & res() noexcept
Definition: MngrEnv.h:49
Rangers.cc
Commands.h
SWC::Env::Mngr::stop
static void stop()
Definition: MngrEnv.h:157
SWC::Core::Vector< EndPoint >
SWC::Env::Mngr::reset
static void reset() noexcept
Definition: MngrEnv.h:83
SWC::Env::Mngr::cfg_ram_release_rate
SWC::Config::Property::Value_int32_g cfg_ram_release_rate
Definition: MngrEnv.h:128
SWC::Env::Mngr::schemas
static SWC_CAN_INLINE Manager::Schemas * schemas() noexcept
Definition: MngrEnv.h:54
SWC::Manager::MngdColumns
Definition: MngdColumns.h:15
MetricsReporting.cc
MetricsReporting.h
SWC::Env::Mngr::role
static SWC_CAN_INLINE Manager::MngrRole * role() noexcept
Definition: MngrEnv.h:64
SWC::Manager::MngrRole
Definition: MngrRole.h:16
SWC::Env::Mngr::m_shutting_down
Core::AtomicBool m_shutting_down
Definition: MngrEnv.h:139
SWC::Manager::Rangers
Definition: Rangers.h:18
SWC::Env::Mngr::init
static void init(const Comm::EndPoints &endpoints)
Definition: MngrEnv.h:27
SWC::Env::Mngr::io
static SWC_CAN_INLINE Comm::IoContextPtr io() noexcept
Definition: MngrEnv.h:33
SWC::Manager::Columns
Definition: Columns.h:24
SWC_ASSERT
#define SWC_ASSERT(_e_)
Definition: Exception.h:165
SWC::Env::Mngr::cfg_ram_percent_reserved
SWC::Config::Property::Value_int32_g cfg_ram_percent_reserved
Definition: MngrEnv.h:127
MngrRole.cc
SWC::Env::Mngr::m_role
Manager::MngrRole m_role
Definition: MngrEnv.h:136
Resources.h
MngdColumns.cc
SWC::Config::Property::Value_int32_g
Definition: Property.h:586
SWC::Env::Mngr::rangers
static SWC_CAN_INLINE Manager::Rangers * rangers() noexcept
Definition: MngrEnv.h:69
SWC::Env::Mngr::app_io
Comm::IoContextPtr app_io
Definition: MngrEnv.h:124
Schemas.h
ColumnHealthCheck.cc