ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::asio_tcp Class Reference

基于Asio的TCP网络管理类。 More...

#include <asio_tcp.h>

Public Types

enum  { etcp_buffmaxsize = 20480 , etcp_connect_interval = 1 }
 TCP配置常量枚举。 More...

Public Member Functions

 asio_tcp (i16_port aport, i32_threadsize athread, const tcp_callback &acallfun, const tcp_closecallback &aclosefun, const tcp_sendfinishcallback &asendfinishfun)
 构造一个在指定端口监听的TCP服务端。
 asio_tcp (const net_listen_endpoint &alisten, i32_threadsize athread, const tcp_callback &acallfun, const tcp_closecallback &aclosefun, const tcp_sendfinishcallback &asendfinishfun)
 asio_tcp (i32_threadsize athread, const tcp_callback &acallfun, const tcp_closecallback &aclosefun, const tcp_sendfinishcallback &asendfinishfun)
 构造一个无监听socket的TCP客户端池。
i16_port port () const
 获取监听端口。
service_tcpconnect (const str_ip &aip, i16_port aport, const tcp_connectcallback &afun, int acount=5)
 发起带可选重试次数的出站TCP连接。
bool send (i32_sessionid asessionid, std::shared_ptr< pack > &apack)
 将类型化的pack入队进行异步发送。
bool send (i32_sessionid asessionid, std::shared_ptr< void > &apack)
 将类型擦除的pack入队进行异步发送。
void close (i32_sessionid sessionid)
 关闭会话并通知回调。
void close (service_tcp *atcp)
 关闭指定的TCP连接并通知回调。
void close_net (i32_sessionid sessionid)
 关闭会话但不触发上层回调。
bool get_ipport (i32_sessionid assionid, std::pair< str_ip, i16_port > &apair)
 查询对端地址信息。
void set_close (i32_sessionid asession, const std::function< void()> &afun)
 注册单个会话级关闭回调。

Friends

class service_tcp
 声明service_tcp为友元类

Detailed Description

基于Asio的TCP网络管理类。

提供完整的TCP服务器和客户端功能,包括:

  • 监听和接受客户端连接
  • 建立到服务器的连接
  • 管理网络会话生命周期
  • 异步数据发送和接收
  • 连接关闭和资源清理
Note
该类不可复制,不可默认构造,必须通过指定参数构造。
使用Boost.Asio作为底层网络库,提供高性能的异步网络操作。

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

TCP配置常量枚举。

Enumerator
etcp_buffmaxsize 

TCP缓冲区最大字节数

etcp_connect_interval 

连接重试间隔(秒)

Constructor & Destructor Documentation

◆ asio_tcp() [1/2]

ngl::asio_tcp::asio_tcp ( i16_port aport,
i32_threadsize athread,
const tcp_callback & acallfun,
const tcp_closecallback & aclosefun,
const tcp_sendfinishcallback & asendfinishfun )

构造一个在指定端口监听的TCP服务端。

Parameters
aport监听端口号
athread工作线程数量
acallfun数据接收回调函数
aclosefun连接关闭回调函数
asendfinishfun发送完成回调函数

◆ asio_tcp() [2/2]

ngl::asio_tcp::asio_tcp ( i32_threadsize athread,
const tcp_callback & acallfun,
const tcp_closecallback & aclosefun,
const tcp_sendfinishcallback & asendfinishfun )

构造一个无监听socket的TCP客户端池。

Parameters
athread工作线程数量
acallfun数据接收回调函数
aclosefun连接关闭回调函数
asendfinishfun发送完成回调函数

Member Function Documentation

◆ close() [1/2]

void ngl::asio_tcp::close ( i32_sessionid sessionid)

关闭会话并通知回调。

Parameters
sessionid要关闭的会话ID

◆ close() [2/2]

void ngl::asio_tcp::close ( service_tcp * atcp)

关闭指定的TCP连接并通知回调。

Parameters
atcp要关闭的TCP连接对象指针

◆ close_net()

void ngl::asio_tcp::close_net ( i32_sessionid sessionid)

关闭会话但不触发上层回调。

Parameters
sessionid要关闭的会话ID

◆ connect()

service_tcp * ngl::asio_tcp::connect ( const str_ip & aip,
i16_port aport,
const tcp_connectcallback & afun,
int acount = 5 )

发起带可选重试次数的出站TCP连接。

Parameters
aip目标IP地址
aport目标端口号
afun连接成功回调函数
acount重试次数,默认为5次
Returns
连接成功返回service_tcp指针,否则返回nullptr

◆ get_ipport()

bool ngl::asio_tcp::get_ipport ( i32_sessionid assionid,
std::pair< str_ip, i16_port > & apair )

查询对端地址信息。

Parameters
assionid会话ID
apair输出参数,存储IP地址和端口
Returns
查询成功返回true,否则返回false

◆ port()

i16_port ngl::asio_tcp::port ( ) const
inline

获取监听端口。

Returns
绑定的监听端口号

◆ send() [1/2]

bool ngl::asio_tcp::send ( i32_sessionid asessionid,
std::shared_ptr< pack > & apack )

将类型化的pack入队进行异步发送。

Parameters
asessionid目标会话ID
apack要发送的数据包共享指针
Returns
发送成功返回true,否则返回false

◆ send() [2/2]

bool ngl::asio_tcp::send ( i32_sessionid asessionid,
std::shared_ptr< void > & apack )

将类型擦除的pack入队进行异步发送。

Parameters
asessionid目标会话ID
apack要发送的数据包共享指针(类型擦除)
Returns
发送成功返回true,否则返回false

◆ set_close()

void ngl::asio_tcp::set_close ( i32_sessionid asession,
const std::function< void()> & afun )

注册单个会话级关闭回调。

Parameters
asession会话ID
afun关闭回调函数

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