|
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_fsbroker_AppContext_h
7 #define swcdb_fsbroker_AppContext_h
40 namespace SWC {
namespace FsBroker {
83 :
conn(std::move(other.conn)),
ev(std::move(other.ev)) {
90 if(!
ev->expired() &&
conn->is_open())
99 typedef std::shared_ptr<AppContext>
Ptr;
103 Env::Config::settings()->get<Config::Property::Value_enum_g>(
104 "swc.FsBroker.comm.encoder")) {
109 settings->get_bool(
"swc.FsBroker.concurrency.relative"),
110 settings->get_i32(
"swc.FsBroker.handlers")
117 if(settings->get_bool(
"swc.FsBroker.metrics.enabled")) {
119 (settings->get_bool(
"swc.FsBroker.metrics.report.broker")
140 "swc.cfg.dyn.period");
149 void init(
const std::string& host,
156 m_metrics->configure_fsbroker(host.c_str(), endpoints);
168 m_srv->connection_add(conn);
174 m_srv->connection_del(conn);
182 return conn->do_close();
187 }
else if(!ev->header.command ||
196 m_metrics->net->command(conn, ev->header.command);
217 m_metrics->net->accepted(endpoint, secure);
225 Task(
AppContext* a_ptr) noexcept : ptr(a_ptr) { }
226 void operator()(
const std::error_code& ec,
const int &sig) {
227 if(ec == asio::error::operation_aborted)
230 sig, ec.message().c_str());
237 sig, ec.message().c_str());
241 SWC_LOGF(
LOG_INFO,
"Shutdown signal, sig=%d ec=%s", sig, ec.message().c_str());
242 std::shared_ptr<std::thread> d(
new std::thread);
243 *d.get() = std::thread([d, ptr=shared_from_this()]{ ptr->stop(); });
249 auto guard =
m_srv->stop_accepting();
253 #if defined(SWC_ENABLE_SANITIZER)
265 #if defined(SWC_ENABLE_SANITIZER)
266 std::this_thread::sleep_for(std::chrono::seconds(2));
288 #endif // swcdb_fsbroker_AppContext_h
static void init(const SWC::Config::Settings::Ptr &settings, FS::Type typ)
void close(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void seek(const ConnHandlerPtr &conn, const Event::Ptr &ev)
static constexpr const Comm::AppHandler_t handlers[]
void handle_established(Comm::ConnHandlerPtr conn) override
Type fs_type(const std::string &fs_name)
void rmdir(const ConnHandlerPtr &conn, const Event::Ptr &ev)
static SWC_CAN_INLINE client::Clients::Ptr & get() noexcept
#define SWC_LOGF(priority, fmt,...)
static SWC_CAN_INLINE void post(T_Handler &&handler)
virtual ~AppContext() noexcept
void read(const ConnHandlerPtr &conn, const Event::Ptr &ev)
std::shared_ptr< ContextManager > Ptr
void exists(const ConnHandlerPtr &conn, const Event::Ptr &ev)
Comm::server::SerializedServer::Ptr m_srv
static SWC::Config::Settings::Ptr & settings()
asio::ip::tcp::endpoint EndPoint
static SWC_CAN_INLINE FS::Interface::Ptr & interface() noexcept
CommandHandler(const CommandHandler &)=delete
std::shared_ptr< ContextBroker > Ptr
static void reset() noexcept
void shutting_down(const std::error_code &ec, const int &sig)
static void init(const client::Clients::Ptr &clients)
void set_srv(Comm::server::SerializedServer::Ptr srv)
void read_all(const ConnHandlerPtr &conn, const Event::Ptr &ev)
Metric::Reporting::Ptr m_metrics
CommandHandler & operator=(const CommandHandler &)=delete
SWC_CAN_INLINE CommandHandler(const Comm::ConnHandlerPtr &a_conn, const Comm::Event::Ptr &a_ev) noexcept
void create(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void sync(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void mkdirs(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void readdir(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void net_bytes_sent(const Comm::ConnHandlerPtr &conn, size_t b) noexcept override
void open(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void net_bytes_received(const Comm::ConnHandlerPtr &conn, size_t b) noexcept override
The SWC-DB C++ namespace 'SWC'.
void pread(const ConnHandlerPtr &conn, const Event::Ptr &ev)
static SWC_CAN_INLINE SWC::FsBroker::Metric::Reporting::Ptr & metrics_track() noexcept
static SWC_CAN_INLINE bool can_process() noexcept
static SWC_CAN_INLINE int64_t in_process() noexcept
@ MAX_CMD
Maximum code marker.
static SWC_CAN_INLINE void init(int32_t size)
void length(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void not_implemented(const ConnHandlerPtr &conn, const Event::Ptr &ev)
std::shared_ptr< SerializedServer > Ptr
~CommandHandler() noexcept
void write(const ConnHandlerPtr &conn, const Event::Ptr &ev)
CommandHandler & operator=(CommandHandler &&)=delete
Comm::ConnHandlerPtr conn
std::shared_ptr< ConnHandler > ConnHandlerPtr
void remove(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void(* AppHandler_t)(const ConnHandlerPtr &conn, const Event::Ptr &ev)
std::shared_ptr< AppContext > Ptr
void rename(const ConnHandlerPtr &conn, const Event::Ptr &ev)
static void shuttingdown()
void flush(const ConnHandlerPtr &conn, const Event::Ptr &ev)
static void reset() noexcept
void handle_disconnect(Comm::ConnHandlerPtr conn) noexcept override
SWC_CAN_INLINE CommandHandler(CommandHandler &&other) noexcept
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()
static void reset() noexcept
void combi_pread(const ConnHandlerPtr &conn, const Event::Ptr &ev)
std::shared_ptr< Event > Ptr
void net_accepted(const Comm::EndPoint &endpoint, bool secure) noexcept override
void append(const ConnHandlerPtr &conn, const Event::Ptr &ev)
void init(const std::string &host, const Comm::EndPoints &endpoints) override
std::shared_ptr< Reporting > Ptr
void handle(Comm::ConnHandlerPtr conn, const Comm::Event::Ptr &ev) override
static void reset() noexcept