|
SWC-DB
v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
|
Go to the documentation of this file.
6 #ifndef swcdb_app_thriftbroker_AppContext_h
7 #define swcdb_app_thriftbroker_AppContext_h
19 namespace ThriftBroker { }
23 namespace ThriftBroker {
27 public std::enable_shared_from_this<AppContext> {
30 typedef std::shared_ptr<AppContext>
Ptr;
60 [ptr=shared_from_this()] (
size_t bytes) {
61 return ptr->release(bytes);
74 m_metrics->configure_thriftbroker(host.c_str(), endpoints);
83 m_cv.wait(lock_wait, [
this]{
return !
m_run;});
86 BrokerIf*
getHandler(
const thrift::TConnectionInfo& connInfo)
override {
87 auto socket = std::dynamic_pointer_cast<thrift::transport::TSocket>(
96 <<
" [" << handler->
socket->getPeerAddress() <<
"]:"
97 << handler->
socket->getPeerPort()
119 <<
" [" << handler->
socket->getPeerAddress() <<
"]:"
120 << handler->
socket->getPeerPort()
121 <<
") open=" << remain_open;
129 <<
" BAD CAST) open=" << remain_open; );
144 Task(
AppContext* a_ptr) noexcept : ptr(a_ptr) { }
145 void operator()(
const std::error_code& ec,
const int &sig) {
146 if(ec == asio::error::operation_aborted)
149 sig, ec.message().c_str());
156 sig, ec.message().c_str());
165 SWC_LOGF(
LOG_INFO,
"Shutdown signal, sig=%d ec=%s", sig, ec.message().c_str());
166 std::shared_ptr<std::thread> d(
new std::thread);
167 *d.get() = std::thread([d, ptr=shared_from_this()]{ ptr->stop(); });
177 #if defined(SWC_ENABLE_SANITIZER)
190 std::this_thread::yield();
203 #if defined(SWC_ENABLE_SANITIZER)
204 std::this_thread::sleep_for(std::chrono::seconds(2));
215 for(
size_t idx=0;;++idx) {
221 for(
size_t i = idx; i; --i, ++it);
224 size_t sz = handler->updaters_commit(bytes);
226 if(bytes <= (released += sz))
250 return lhs.get() < rhs.get();
254 return lhs.get() < rhs;
258 return lhs < rhs.get();
270 #include "swcdb/thrift/gen-cpp/Broker.cpp"
271 #ifdef SWC_IMPL_SOURCE
272 #include "swcdb/thrift/gen-cpp/Service.cpp"
273 #include "swcdb/thrift/gen-cpp/Service_types.cpp"
278 #endif // swcdb_app_thriftbroker_AppContext_h
constexpr SWC_CAN_INLINE bool compare_exchange_weak(T &at, T value) noexcept
bool operator()(const AppHandler::Ptr &lhs, const AppHandler *rhs) const noexcept
virtual ~AppContext() noexcept
static SWC_CAN_INLINE client::Clients::Ptr & get() noexcept
#define SWC_LOGF(priority, fmt,...)
std::shared_ptr< AppHandler > Ptr
#define SWC_LOG_OUT(pr, _code_)
std::condition_variable m_cv
std::shared_ptr< ContextManager > Ptr
static SWC::Config::Settings::Ptr & settings()
void exception(int err, const std::string &msg="")
std::shared_ptr< Reporting > Ptr
BrokerIf * getHandler(const thrift::TConnectionInfo &connInfo) override
const std::shared_ptr< thrift::transport::TSocket > socket
static void init(const client::Clients::Ptr &clients)
Core::CompletionCounter< size_t > m_connections
The SWC-DB C++ namespace 'SWC'.
std::set< AppHandler::Ptr, HandlerLess > m_handlers
Metric::Reporting::Ptr m_metrics
static SWC_CAN_INLINE void init(int32_t size)
bool operator()(const AppHandler::Ptr &lhs, const AppHandler::Ptr &rhs) const noexcept
size_t release(size_t bytes)
bool operator()(const AppHandler *lhs, const AppHandler::Ptr &rhs) const noexcept
std::shared_ptr< AppContext > Ptr
static SWC_CAN_INLINE SWC::ThriftBroker::Metric::Reporting::Ptr & metrics_track() noexcept
static void reset() noexcept
Core::MutexSptd m_mutex_handlers
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)
static Comm::IoContextPtr io()
void releaseHandler(ServiceIf *hdlr) override
static void reset() noexcept
static void init(System::Mem::ReleaseCall_t &&release_call)
void init(const std::string &host, const Comm::EndPoints &endpoints)
constexpr SWC_CAN_INLINE CountT decrement_and_count() noexcept
#define SWC_LOG_CURRENT_EXCEPTION(_s_)
constexpr SWC_CAN_INLINE CountT increment_and_count() noexcept
void shutting_down(const std::error_code &ec, const int &sig)