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

Thread-safe TCP Server implementation. More...

#include <tcp_server.hpp>

Inheritance diagram for unilink::transport::TcpServer:
unilink::interface::Channel

Classes

struct  Impl
 

Public Types

using MultiClientConnectHandler = std::function< void(size_t client_id, const std::string &client_info)>
 
using MultiClientDataHandler = std::function< void(size_t client_id, const std::string &data)>
 
using MultiClientDisconnectHandler = std::function< void(size_t client_id)>
 

Public Member Functions

 ~TcpServer () override
 
 TcpServer (TcpServer &&) noexcept
 
TcpServeroperator= (TcpServer &&) noexcept
 
 TcpServer (const TcpServer &)=delete
 
TcpServeroperator= (const TcpServer &)=delete
 
void start () override
 
void stop () override
 
bool is_connected () const override
 
void async_write_copy (memory::ConstByteSpan data) override
 
void async_write_move (std::vector< uint8_t > &&data) override
 
void async_write_shared (std::shared_ptr< const std::vector< uint8_t >> data) override
 
void on_bytes (OnBytes cb) override
 
void on_state (OnState cb) override
 
void on_backpressure (OnBackpressure cb) override
 
bool broadcast (const std::string &message)
 
bool send_to_client (size_t client_id, const std::string &message)
 
size_t get_client_count () const
 
std::vector< size_t > get_connected_clients () const
 
void request_stop ()
 
void on_multi_connect (MultiClientConnectHandler handler)
 
void on_multi_data (MultiClientDataHandler handler)
 
void on_multi_disconnect (MultiClientDisconnectHandler handler)
 
void set_client_limit (size_t max_clients)
 
void set_unlimited_clients ()
 
base::LinkState get_state () const
 

Static Public Member Functions

static std::shared_ptr< TcpServercreate (const config::TcpServerConfig &cfg)
 
static std::shared_ptr< TcpServercreate (const config::TcpServerConfig &cfg, std::unique_ptr< interface::TcpAcceptorInterface > acceptor, boost::asio::io_context &ioc)
 

Detailed Description

Thread-safe TCP Server implementation.

Definition at line 44 of file tcp_server.hpp.

Member Typedef Documentation

◆ MultiClientConnectHandler

using unilink::transport::TcpServer::MultiClientConnectHandler = std::function<void(size_t client_id, const std::string& client_info)>

Definition at line 79 of file tcp_server.hpp.

◆ MultiClientDataHandler

using unilink::transport::TcpServer::MultiClientDataHandler = std::function<void(size_t client_id, const std::string& data)>

Definition at line 80 of file tcp_server.hpp.

◆ MultiClientDisconnectHandler

using unilink::transport::TcpServer::MultiClientDisconnectHandler = std::function<void(size_t client_id)>

Definition at line 81 of file tcp_server.hpp.

Constructor & Destructor Documentation

◆ ~TcpServer()

unilink::transport::TcpServer::~TcpServer ( )
override

Definition at line 411 of file tcp_server.cc.

◆ TcpServer() [1/2]

unilink::transport::TcpServer::TcpServer ( TcpServer &&  )
defaultnoexcept

◆ TcpServer() [2/2]

unilink::transport::TcpServer::TcpServer ( const TcpServer )
delete

Member Function Documentation

◆ async_write_copy()

void unilink::transport::TcpServer::async_write_copy ( memory::ConstByteSpan  data)
overridevirtual

Implements unilink::interface::Channel.

Definition at line 475 of file tcp_server.cc.

◆ async_write_move()

void unilink::transport::TcpServer::async_write_move ( std::vector< uint8_t > &&  data)
overridevirtual

Implements unilink::interface::Channel.

Definition at line 489 of file tcp_server.cc.

◆ async_write_shared()

void unilink::transport::TcpServer::async_write_shared ( std::shared_ptr< const std::vector< uint8_t >>  data)
overridevirtual

Implements unilink::interface::Channel.

Definition at line 503 of file tcp_server.cc.

◆ broadcast()

bool unilink::transport::TcpServer::broadcast ( const std::string &  message)

Definition at line 540 of file tcp_server.cc.

◆ create() [1/2]

std::shared_ptr< TcpServer > unilink::transport::TcpServer::create ( const config::TcpServerConfig cfg)
static

Definition at line 395 of file tcp_server.cc.

◆ create() [2/2]

static std::shared_ptr<TcpServer> unilink::transport::TcpServer::create ( const config::TcpServerConfig cfg,
std::unique_ptr< interface::TcpAcceptorInterface acceptor,
boost::asio::io_context &  ioc 
)
static

◆ get_client_count()

size_t unilink::transport::TcpServer::get_client_count ( ) const

Definition at line 567 of file tcp_server.cc.

◆ get_connected_clients()

std::vector< size_t > unilink::transport::TcpServer::get_connected_clients ( ) const

Definition at line 576 of file tcp_server.cc.

◆ get_state()

base::LinkState unilink::transport::TcpServer::get_state ( ) const

Definition at line 621 of file tcp_server.cc.

◆ is_connected()

bool unilink::transport::TcpServer::is_connected ( ) const
overridevirtual

Implements unilink::interface::Channel.

Definition at line 469 of file tcp_server.cc.

◆ on_backpressure()

void unilink::transport::TcpServer::on_backpressure ( OnBackpressure  cb)
overridevirtual

Implements unilink::interface::Channel.

Definition at line 525 of file tcp_server.cc.

◆ on_bytes()

void unilink::transport::TcpServer::on_bytes ( OnBytes  cb)
overridevirtual

Implements unilink::interface::Channel.

Definition at line 517 of file tcp_server.cc.

◆ on_multi_connect()

void unilink::transport::TcpServer::on_multi_connect ( MultiClientConnectHandler  handler)

Definition at line 586 of file tcp_server.cc.

◆ on_multi_data()

void unilink::transport::TcpServer::on_multi_data ( MultiClientDataHandler  handler)

Definition at line 590 of file tcp_server.cc.

◆ on_multi_disconnect()

void unilink::transport::TcpServer::on_multi_disconnect ( MultiClientDisconnectHandler  handler)

Definition at line 594 of file tcp_server.cc.

◆ on_state()

void unilink::transport::TcpServer::on_state ( OnState  cb)
overridevirtual

Implements unilink::interface::Channel.

Definition at line 521 of file tcp_server.cc.

◆ operator=() [1/2]

TcpServer& unilink::transport::TcpServer::operator= ( const TcpServer )
delete

◆ operator=() [2/2]

TcpServer & unilink::transport::TcpServer::operator= ( TcpServer &&  )
defaultnoexcept

◆ request_stop()

void unilink::transport::TcpServer::request_stop ( )

Definition at line 462 of file tcp_server.cc.

◆ send_to_client()

bool unilink::transport::TcpServer::send_to_client ( size_t  client_id,
const std::string &  message 
)

Definition at line 555 of file tcp_server.cc.

◆ set_client_limit()

void unilink::transport::TcpServer::set_client_limit ( size_t  max_clients)

Definition at line 599 of file tcp_server.cc.

◆ set_unlimited_clients()

void unilink::transport::TcpServer::set_unlimited_clients ( )

Definition at line 610 of file tcp_server.cc.

◆ start()

void unilink::transport::TcpServer::start ( )
overridevirtual

Implements unilink::interface::Channel.

Definition at line 421 of file tcp_server.cc.

◆ stop()

void unilink::transport::TcpServer::stop ( )
overridevirtual

Implements unilink::interface::Channel.

Definition at line 460 of file tcp_server.cc.


The documentation for this class was generated from the following files: