unilink  0.4.3
A simple C++ library for unified async communication
unilink::transport::TcpServer::Impl Struct Reference

Public Member Functions

 Impl (const config::TcpServerConfig &cfg)
 
 Impl (const config::TcpServerConfig &cfg, std::unique_ptr< interface::TcpAcceptorInterface > acceptor, net::io_context &ioc)
 
 ~Impl ()
 
void notify_state ()
 
void attempt_port_binding (std::shared_ptr< TcpServer > self, int retry_count)
 
void do_accept (std::shared_ptr< TcpServer > self)
 
void perform_cleanup ()
 
void stop (std::shared_ptr< TcpServer > self)
 

Public Attributes

std::atomic< bool > stopping_ {false}
 
std::atomic< size_t > next_client_id_ {0}
 
std::unique_ptr< net::io_context > owned_ioc_
 
bool owns_ioc_
 
bool uses_global_ioc_
 
net::io_context & ioc_
 
std::thread ioc_thread_
 
std::unique_ptr< interface::TcpAcceptorInterfaceacceptor_
 
config::TcpServerConfig cfg_
 
concurrency::ThreadSafeLinkState state_ {base::LinkState::Idle}
 
OnBytes on_bytes_
 
OnState on_state_
 
OnBackpressure on_bp_
 
MultiClientConnectHandler on_multi_connect_
 
MultiClientDataHandler on_multi_data_
 
MultiClientDisconnectHandler on_multi_disconnect_
 
std::mutex sessions_mutex_
 
std::unordered_map< size_t, std::shared_ptr< TcpServerSession > > sessions_
 
size_t max_clients_
 
bool client_limit_enabled_
 
bool paused_accept_ = false
 
std::shared_ptr< TcpServerSessioncurrent_session_
 

Detailed Description

Definition at line 40 of file tcp_server.cc.

Constructor & Destructor Documentation

◆ Impl() [1/2]

Definition at line 70 of file tcp_server.cc.

◆ Impl() [2/2]

unilink::transport::TcpServer::Impl::Impl ( const config::TcpServerConfig cfg,
std::unique_ptr< interface::TcpAcceptorInterface acceptor,
net::io_context &  ioc 
)
inline

Definition at line 84 of file tcp_server.cc.

◆ ~Impl()

unilink::transport::TcpServer::Impl::~Impl ( )
inline

Definition at line 98 of file tcp_server.cc.

Member Function Documentation

◆ attempt_port_binding()

void unilink::transport::TcpServer::Impl::attempt_port_binding ( std::shared_ptr< TcpServer self,
int  retry_count 
)
inline

Definition at line 131 of file tcp_server.cc.

◆ do_accept()

void unilink::transport::TcpServer::Impl::do_accept ( std::shared_ptr< TcpServer self)
inline

Definition at line 190 of file tcp_server.cc.

◆ notify_state()

void unilink::transport::TcpServer::Impl::notify_state ( )
inline

Definition at line 116 of file tcp_server.cc.

◆ perform_cleanup()

void unilink::transport::TcpServer::Impl::perform_cleanup ( )
inline

Definition at line 316 of file tcp_server.cc.

◆ stop()

void unilink::transport::TcpServer::Impl::stop ( std::shared_ptr< TcpServer self)
inline

Definition at line 346 of file tcp_server.cc.

Member Data Documentation

◆ acceptor_

std::unique_ptr<interface::TcpAcceptorInterface> unilink::transport::TcpServer::Impl::acceptor_

Definition at line 50 of file tcp_server.cc.

◆ cfg_

config::TcpServerConfig unilink::transport::TcpServer::Impl::cfg_

Definition at line 51 of file tcp_server.cc.

◆ client_limit_enabled_

bool unilink::transport::TcpServer::Impl::client_limit_enabled_

Definition at line 65 of file tcp_server.cc.

◆ current_session_

std::shared_ptr<TcpServerSession> unilink::transport::TcpServer::Impl::current_session_

Definition at line 68 of file tcp_server.cc.

◆ ioc_

net::io_context& unilink::transport::TcpServer::Impl::ioc_

Definition at line 47 of file tcp_server.cc.

◆ ioc_thread_

std::thread unilink::transport::TcpServer::Impl::ioc_thread_

Definition at line 48 of file tcp_server.cc.

◆ max_clients_

size_t unilink::transport::TcpServer::Impl::max_clients_

Definition at line 64 of file tcp_server.cc.

◆ next_client_id_

std::atomic<size_t> unilink::transport::TcpServer::Impl::next_client_id_ {0}

Definition at line 42 of file tcp_server.cc.

◆ on_bp_

OnBackpressure unilink::transport::TcpServer::Impl::on_bp_

Definition at line 56 of file tcp_server.cc.

◆ on_bytes_

OnBytes unilink::transport::TcpServer::Impl::on_bytes_

Definition at line 54 of file tcp_server.cc.

◆ on_multi_connect_

MultiClientConnectHandler unilink::transport::TcpServer::Impl::on_multi_connect_

Definition at line 57 of file tcp_server.cc.

◆ on_multi_data_

MultiClientDataHandler unilink::transport::TcpServer::Impl::on_multi_data_

Definition at line 58 of file tcp_server.cc.

◆ on_multi_disconnect_

MultiClientDisconnectHandler unilink::transport::TcpServer::Impl::on_multi_disconnect_

Definition at line 59 of file tcp_server.cc.

◆ on_state_

OnState unilink::transport::TcpServer::Impl::on_state_

Definition at line 55 of file tcp_server.cc.

◆ owned_ioc_

std::unique_ptr<net::io_context> unilink::transport::TcpServer::Impl::owned_ioc_

Definition at line 44 of file tcp_server.cc.

◆ owns_ioc_

bool unilink::transport::TcpServer::Impl::owns_ioc_

Definition at line 45 of file tcp_server.cc.

◆ paused_accept_

bool unilink::transport::TcpServer::Impl::paused_accept_ = false

Definition at line 66 of file tcp_server.cc.

◆ sessions_

std::unordered_map<size_t, std::shared_ptr<TcpServerSession> > unilink::transport::TcpServer::Impl::sessions_

Definition at line 62 of file tcp_server.cc.

◆ sessions_mutex_

std::mutex unilink::transport::TcpServer::Impl::sessions_mutex_
mutable

Definition at line 61 of file tcp_server.cc.

◆ state_

concurrency::ThreadSafeLinkState unilink::transport::TcpServer::Impl::state_ {base::LinkState::Idle}

Definition at line 53 of file tcp_server.cc.

◆ stopping_

std::atomic<bool> unilink::transport::TcpServer::Impl::stopping_ {false}

Definition at line 41 of file tcp_server.cc.

◆ uses_global_ioc_

bool unilink::transport::TcpServer::Impl::uses_global_ioc_

Definition at line 46 of file tcp_server.cc.


The documentation for this struct was generated from the following file: