1 #ifndef LIBJMMCG_COER_SERVER_MANAGER_GLIBC_HPP
2 #define LIBJMMCG_COER_SERVER_MANAGER_GLIBC_HPP
28 # pragma GCC diagnostic push
29 # pragma GCC diagnostic ignored "-Wsuggest-final-methods"
30 # pragma GCC diagnostic ignored "-Wsuggest-final-types"
44 using socket_priority=
typename socket_t::socket_priority;
51 explicit session(
typename socket_t::socket_type accept_socket)
noexcept(
false)
59 template<
class RecvProcMsgs>
60 bool process(RecvProcMsgs proc_fn)
noexcept(
false) {
65 template<
class RecvProcMsgs>
66 bool process(RecvProcMsgs proc_fn, socket_t &dest_socket)
noexcept(
false) {
67 return proc_fn(*
this, dest_socket);
83 static ptr_type
make(
typename socket_t::socket_type accept_socket)
noexcept(
false) {
84 return std::make_shared<
typename ptr_type::element_type>(accept_socket);
90 using server_to_client_flow_t=
std::function<
void (
typename session::ptr_type)>;
97 manager(
boost::
asio::
ip::address
const &addr,
unsigned short port_num,
std::size_t min_message_size,
std::size_t max_message_size,
unsigned short timeout, socket_priority priority,
std::size_t incoming_cpu, server_to_client_flow_t &&server_to_client_flow);
104 static void set_options(acceptor_t &acceptor, socket_t &skt);
119 operator<<(
std::ostream &os,
typename manager<LkT>::tcp_connection
const &ec)
noexcept(
false);
122 inline std::ostream &
123 operator<<(
std::ostream &os,
manager<LkT>
const &ec)
noexcept(
false);
126 template<
class SvrHBs,
class LkT>
131 using heartbeats_t=SvrHBs;
132 using socket_t=
typename base_t::socket_t;
133 using socket_priority=
typename base_t::socket_priority;
134 using server_to_client_flow_t=
typename base_t::server_to_client_flow_t;
135 using base_t::base_t;
140 loopback(
boost::
asio::
ip::address
const &addr,
unsigned short port_num,
std::size_t min_message_size,
std::size_t max_message_size,
unsigned short timeout, socket_priority priority,
std::size_t incoming_cpu, server_to_client_flow_t &&server_to_client_flow);
146 template<
class RecvProcMsgs>
147 void start_accept(RecvProcMsgs proc_fn)
noexcept(
false);
150 class send_heartbeats;
158 using socket_t=
typename base_t::socket_t;
159 using socket_priority=
typename base_t::socket_priority;
160 using server_to_client_flow_t=
typename base_t::server_to_client_flow_t;
165 forwarding(
boost::
asio::
ip::address
const &addr,
unsigned short port_num,
std::size_t min_message_size,
std::size_t max_message_size,
unsigned short timeout, socket_priority priority,
std::size_t incoming_cpu, server_to_client_flow_t &&server_to_client_flow, socket_t &dest);
171 template<
class RecvProcMsgs>
172 void start_accept(RecvProcMsgs proc_fn)
noexcept(
false);
175 socket_t &dest_socket_;
183 # pragma GCC diagnostic pop