SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
SerializedServer.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 
7 #ifndef swcdb_core_comm_SerializedServer_h
8 #define swcdb_core_comm_SerializedServer_h
9 
10 
14 
15 
16 namespace SWC { namespace Comm {
17 
18 
20 namespace server {
21 
22 
23 
24 class Acceptor final : protected asio::ip::tcp::acceptor {
25  public:
26  typedef std::shared_ptr<Acceptor> Ptr;
27 
28  Acceptor(asio::ip::tcp::acceptor& acceptor,
29  AppContext::Ptr& app_ctx,
30  ConfigSSL* ssl_cfg);
31 
32  Acceptor(Acceptor&&) = delete;
33  Acceptor(const Acceptor&) = delete;
34  Acceptor& operator=(Acceptor&&) = delete;
35  Acceptor& operator=(const Acceptor&) = delete;
36 
37  void accept();
38 
39  void stop();
40 
41  ~Acceptor() noexcept { }
42 
44  asio::ip::tcp::acceptor* sock() noexcept {
45  return this;
46  }
47 
48  private:
49  struct Mixed;
50  struct Plain;
51 
54 
55 };
56 
57 
58 
59 class SerializedServer final {
60  public:
61 
62  typedef std::shared_ptr<SerializedServer> Ptr;
63 
65  const Config::Settings& settings,
66  std::string&& name,
67  bool concurrency_relative,
68  uint32_t reactors, uint32_t workers, uint16_t port,
69  AppContext::Ptr app_ctx
70  );
71 
76 
77  void run();
78 
79  std::shared_ptr<IoContext::ExecutorWorkGuard> stop_accepting();
80 
81  void shutdown();
82 
83  void connection_add(const ConnHandlerPtr& conn);
84 
85  void connection_del(const ConnHandlerPtr& conn);
86 
87  ~SerializedServer() noexcept;
88 
89  private:
90 
91  const std::string m_appname;
93  Core::Vector<IoContextPtr> m_io_contexts;
94  Core::Vector<Acceptor::Ptr> m_acceptors;
95 
96  Core::MutexSptd m_mutex;
97  Core::Vector<ConnHandlerPtr> m_conns;
99 };
100 
101 
102 }}} //namespace SWC::Comm::server
103 
104 
105 
106 #ifdef SWC_IMPL_SOURCE
108 #endif
109 
110 #endif // swcdb_core_comm_SerializedServer_h
SWC::Comm::server::SerializedServer::operator=
SerializedServer & operator=(const SerializedServer &)=delete
ConnHandler.h
SWC::Comm::server::Acceptor::Ptr
std::shared_ptr< Acceptor > Ptr
Definition: SerializedServer.h:26
SWC::Comm::IoContextPtr
std::shared_ptr< IoContext > IoContextPtr
Definition: IoContext.h:16
SWC::Comm::server::Acceptor::Acceptor
Acceptor(asio::ip::tcp::acceptor &acceptor, AppContext::Ptr &app_ctx, ConfigSSL *ssl_cfg)
Definition: SerializedServer.cc:104
IoContext.h
SWC::Comm::server::SerializedServer::m_mutex
Core::MutexSptd m_mutex
Definition: SerializedServer.h:96
SWC::Comm::server::SerializedServer::m_ssl_cfg
ConfigSSL * m_ssl_cfg
Definition: SerializedServer.h:98
ConfigSSL.h
SWC::Comm::server::SerializedServer::connection_add
void connection_add(const ConnHandlerPtr &conn)
Definition: SerializedServer.cc:289
SWC::Comm::server::SerializedServer::SerializedServer
SerializedServer(const Config::Settings &settings, std::string &&name, bool concurrency_relative, uint32_t reactors, uint32_t workers, uint16_t port, AppContext::Ptr app_ctx)
Definition: SerializedServer.cc:141
SWC::Comm::AppContext::Ptr
std::shared_ptr< AppContext > Ptr
Definition: AppContext.h:23
SWC::Comm::server::Acceptor::operator=
Acceptor & operator=(Acceptor &&)=delete
SWC::Comm::server::SerializedServer::m_conns
Core::Vector< ConnHandlerPtr > m_conns
Definition: SerializedServer.h:97
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Comm::server::Acceptor::~Acceptor
~Acceptor() noexcept
Definition: SerializedServer.h:41
SWC::Comm::server::SerializedServer::shutdown
void shutdown()
Definition: SerializedServer.cc:269
SWC::Comm::server::SerializedServer::operator=
SerializedServer & operator=(SerializedServer &&)=delete
SerializedServer.cc
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Comm::server::SerializedServer
Definition: SerializedServer.h:59
SWC::Comm::server::SerializedServer::m_run
Core::AtomicBool m_run
Definition: SerializedServer.h:92
SWC::Comm::server::Acceptor::sock
SWC_CAN_INLINE asio::ip::tcp::acceptor * sock() noexcept
Definition: SerializedServer.h:44
SWC::Comm::server::SerializedServer::m_io_contexts
Core::Vector< IoContextPtr > m_io_contexts
Definition: SerializedServer.h:93
SWC::Comm::ConfigSSL
Definition: ConfigSSL.h:18
SWC::Comm::server::Acceptor::m_ssl_cfg
ConfigSSL * m_ssl_cfg
Definition: SerializedServer.h:53
SWC::Comm::server::SerializedServer::Ptr
std::shared_ptr< SerializedServer > Ptr
Definition: SerializedServer.h:62
SWC::Config::Settings
Definition: Settings.h:25
SWC::Comm::server::Acceptor::stop
void stop()
Definition: SerializedServer.cc:127
SWC::Comm::server::Acceptor::m_app_ctx
AppContext::Ptr m_app_ctx
Definition: SerializedServer.h:50
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
SWC::Comm::server::Acceptor::accept
void accept()
Definition: SerializedServer.cc:114
SWC::Comm::server::Acceptor::operator=
Acceptor & operator=(const Acceptor &)=delete
SWC::Comm::server::SerializedServer::SerializedServer
SerializedServer(const SerializedServer &)=delete
SWC::Comm::server::Acceptor::Acceptor
Acceptor(Acceptor &&)=delete
SWC::Comm::server::SerializedServer::run
void run()
Definition: SerializedServer.cc:245
SWC::Comm::server::SerializedServer::connection_del
void connection_del(const ConnHandlerPtr &conn)
Definition: SerializedServer.cc:296
SWC::Comm::server::SerializedServer::~SerializedServer
~SerializedServer() noexcept
Definition: SerializedServer.cc:307
SWC::Comm::server::SerializedServer::SerializedServer
SerializedServer(SerializedServer &&)=delete
SWC::Comm::server::SerializedServer::stop_accepting
std::shared_ptr< IoContext::ExecutorWorkGuard > stop_accepting()
Definition: SerializedServer.cc:256
SWC::Comm::server::Acceptor::Acceptor
Acceptor(const Acceptor &)=delete
SWC::Comm::server::SerializedServer::m_acceptors
Core::Vector< Acceptor::Ptr > m_acceptors
Definition: SerializedServer.h:94
SWC::Comm::server::Acceptor
Definition: SerializedServer.h:24
SWC::Core::AtomicBool
AtomicBase< bool > AtomicBool
Definition: Atomic.h:63
SWC::Comm::server::SerializedServer::m_appname
const std::string m_appname
Definition: SerializedServer.h:91