|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
基于Boost.Asio的UDP套接字KCP收发封装类。 More...
#include <asio_kcp.h>
Public Types | |
| enum | { e_buff_byte = 1500 , e_buffrecv_byte = 10240 , e_close_intervalms = 1* tools::time::MILLISECOND , e_waitrecv_intervalms = 1* tools::time::MILLISECOND } |
| 缓冲区和时间间隔常量。 More... | |
Public Member Functions | |
| asio_kcp (i16_port port) | |
| 构造函数,绑定到指定UDP端口并初始化KCP传输。 | |
| ~asio_kcp () noexcept | |
| 析构函数,停止IO线程并清理所有KCP会话。 | |
| i16_port | port () const |
| bool | sendu (const basio::ip::udp::endpoint &aendpoint, const char *buf, int32_t len) |
| 向指定UDP端点发送原始字节数据。 | |
| bool | sendu (kcp_endpoint *akcpe, const char *buf, int32_t len) |
| 向KCP端点对应的远端发送原始字节数据。 | |
| bool | sendu (const basio::ip::udp::endpoint &aendpoint, const std::shared_ptr< pack > &apack) |
| 向指定UDP端点发送序列化的数据包。 | |
| bool | sendu (kcp_endpoint *akcpe, const std::shared_ptr< pack > &apack) |
| 向KCP端点对应的远端发送序列化的数据包。 | |
| bool | sendu_waitrecv (const basio::ip::udp::endpoint &aendpoint, const std::shared_ptr< pack > &apack) |
| 发送序列化数据包并等待同一端点的回复。 | |
| bool | sendu_waitrecv (const basio::ip::udp::endpoint &aendpoint, const char *buf, int len, const std::function< void(char *, int)> &afun) |
| 发送原始UDP数据报并阻塞等待来自同一端点的回复。 | |
| bool | send (std::shared_ptr< pack > &apack) |
| 向所有活跃KCP会话广播一个序列化pack。 | |
| bool | sendpackbyarea (i16_area aarea, std::shared_ptr< pack > &apack) |
| 仅向指定区域的会话广播一个序列化pack。 | |
| bool | send (i32_sessionid asessionid, std::shared_ptr< pack > &apack) |
| 向指定会话ID发送序列化数据包。 | |
| bool | send (i32_sessionid asessionid, const char *buf, int32_t len) |
| 向指定会话ID发送原始字节数据。 | |
| void | connect (int32_t aconv, std::string &akcpsess, i64_actorid aserver, i64_actorid aclient, const std::string &aip, i16_port aport, const std::function< void(i32_session)> &afun) |
| 通过IP地址和端口发起KCP连接握手。 | |
| void | connect (int32_t aconv, std::string &akcpsess, i64_actorid aserver, i64_actorid aclient, const basio::ip::udp::endpoint &aendpoint, const std::function< void(i32_session)> &afun) |
| 通过预构建的UDP端点发起KCP连接握手。 | |
| i64_actorid | find_server (i32_session asession) |
| 根据会话ID查找对应的服务端Actor ID。 | |
| bool | find_actorid (i32_session asession, i64_actorid &aserver, i64_actorid &aclient) |
| 根据会话ID查找对应的服务端和客户端Actor ID。 | |
| i32_session | find_session (i64_actorid aclient) |
| 根据客户端Actor ID查找其当前KCP会话ID。 | |
| void | close (i32_session asession) |
| 发起逻辑关闭握手,如果控制命令发送失败则回退到立即本地清理。 | |
| void | close_net (i32_session asession) |
| 立即从本地会话表中移除KCP会话(不发送控制命令)。 | |
| void | reset_add (int32_t aconv, const std::string &aip, i16_port aport, i64_actorid aserver, i64_actorid aclient) |
| 重新连接到同一对端后重建逻辑会话映射。 | |
| bool | sempack (const std::shared_ptr< kcp_endpoint > &apstruct, const char *abuff, int abufflen) |
| 将一个完整重组的KCP载荷送入正常协议管线。 | |
| void | start () |
| 启动异步UDP接收循环,开始处理网络IO。 | |
基于Boost.Asio的UDP套接字KCP收发封装类。
将KCP可靠传输协议与Asio异步IO结合,提供完整的KCP网络传输功能。 不可拷贝,绑定到一个本地UDP端口,通过专用io_context线程运行异步IO。
| anonymous enum |
|
explicit |
构造函数,绑定到指定UDP端口并初始化KCP传输。
| port | 本地UDP监听端口。 |
| void ngl::asio_kcp::close | ( | i32_session | asession | ) |
发起逻辑关闭握手,如果控制命令发送失败则回退到立即本地清理。
| asession | 待关闭的会话ID。 |
| void ngl::asio_kcp::close_net | ( | i32_session | asession | ) |
立即从本地会话表中移除KCP会话(不发送控制命令)。
| asession | 待移除的会话ID。 |
| void ngl::asio_kcp::connect | ( | int32_t | aconv, |
| std::string & | akcpsess, | ||
| i64_actorid | aserver, | ||
| i64_actorid | aclient, | ||
| const basio::ip::udp::endpoint & | aendpoint, | ||
| const std::function< void(i32_session)> & | afun ) |
通过预构建的UDP端点发起KCP连接握手。
| aconv | KCP会话ID(conv值)。 | |
| [out] | akcpsess | 输出的KCP会话标识字符串。 |
| aserver | 服务端Actor ID。 | |
| aclient | 客户端Actor ID。 | |
| aendpoint | 目标UDP端点。 | |
| afun | 连接建立后的回调,参数为分配的会话ID。 |
| void ngl::asio_kcp::connect | ( | int32_t | aconv, |
| std::string & | akcpsess, | ||
| i64_actorid | aserver, | ||
| i64_actorid | aclient, | ||
| const std::string & | aip, | ||
| i16_port | aport, | ||
| const std::function< void(i32_session)> & | afun ) |
通过IP地址和端口发起KCP连接握手。
| aconv | KCP会话ID(conv值)。 | |
| [out] | akcpsess | 输出的KCP会话标识字符串。 |
| aserver | 服务端Actor ID。 | |
| aclient | 客户端Actor ID。 | |
| aip | 目标IP地址。 | |
| aport | 目标端口。 | |
| afun | 连接建立后的回调,参数为分配的会话ID。 |
| bool ngl::asio_kcp::find_actorid | ( | i32_session | asession, |
| i64_actorid & | aserver, | ||
| i64_actorid & | aclient ) |
根据会话ID查找对应的服务端和客户端Actor ID。
| asession | 会话ID。 | |
| [out] | aserver | 输出的服务端Actor ID。 |
| [out] | aclient | 输出的客户端Actor ID。 |
| i64_actorid ngl::asio_kcp::find_server | ( | i32_session | asession | ) |
根据会话ID查找对应的服务端Actor ID。
| asession | 会话ID。 |
| i32_session ngl::asio_kcp::find_session | ( | i64_actorid | aclient | ) |
根据客户端Actor ID查找其当前KCP会话ID。
| aclient | 客户端Actor ID。 |
| void ngl::asio_kcp::reset_add | ( | int32_t | aconv, |
| const std::string & | aip, | ||
| i16_port | aport, | ||
| i64_actorid | aserver, | ||
| i64_actorid | aclient ) |
重新连接到同一对端后重建逻辑会话映射。
| aconv | KCP会话ID(conv值)。 |
| aip | 远端IP地址。 |
| aport | 远端端口。 |
| aserver | 服务端Actor ID。 |
| aclient | 客户端Actor ID。 |
| bool ngl::asio_kcp::sempack | ( | const std::shared_ptr< kcp_endpoint > & | apstruct, |
| const char * | abuff, | ||
| int | abufflen ) |
将一个完整重组的KCP载荷送入正常协议管线。
| apstruct | KCP端点。 |
| abuff | 数据缓冲区指针。 |
| abufflen | 数据长度(字节)。 |
| bool ngl::asio_kcp::send | ( | i32_sessionid | asessionid, |
| const char * | buf, | ||
| int32_t | len ) |
向指定会话ID发送原始字节数据。
| asessionid | 目标会话ID。 |
| buf | 数据缓冲区指针。 |
| len | 数据长度(字节)。 |
| bool ngl::asio_kcp::send | ( | i32_sessionid | asessionid, |
| std::shared_ptr< pack > & | apack ) |
向指定会话ID发送序列化数据包。
| asessionid | 目标会话ID。 |
| apack | 已序列化的数据包。 |
| bool ngl::asio_kcp::send | ( | std::shared_ptr< pack > & | apack | ) |
向所有活跃KCP会话广播一个序列化pack。
| apack | 已序列化的数据包。 |
仅向指定区域的会话广播一个序列化pack。
| aarea | 目标区域ID。 |
| apack | 已序列化的数据包。 |
| bool ngl::asio_kcp::sendu | ( | const basio::ip::udp::endpoint & | aendpoint, |
| const char * | buf, | ||
| int32_t | len ) |
向指定UDP端点发送原始字节数据。
| aendpoint | 目标UDP端点。 |
| buf | 数据缓冲区指针。 |
| len | 数据长度(字节)。 |
| bool ngl::asio_kcp::sendu | ( | const basio::ip::udp::endpoint & | aendpoint, |
| const std::shared_ptr< pack > & | apack ) |
向指定UDP端点发送序列化的数据包。
| aendpoint | 目标UDP端点。 |
| apack | 已序列化的数据包。 |
| bool ngl::asio_kcp::sendu | ( | kcp_endpoint * | akcpe, |
| const char * | buf, | ||
| int32_t | len ) |
向KCP端点对应的远端发送原始字节数据。
| akcpe | KCP端点指针。 |
| buf | 数据缓冲区指针。 |
| len | 数据长度(字节)。 |
| bool ngl::asio_kcp::sendu | ( | kcp_endpoint * | akcpe, |
| const std::shared_ptr< pack > & | apack ) |
向KCP端点对应的远端发送序列化的数据包。
| akcpe | KCP端点指针。 |
| apack | 已序列化的数据包。 |
| bool ngl::asio_kcp::sendu_waitrecv | ( | const basio::ip::udp::endpoint & | aendpoint, |
| const char * | buf, | ||
| int | len, | ||
| const std::function< void(char *, int)> & | afun ) |
发送原始UDP数据报并阻塞等待来自同一端点的回复。
| aendpoint | 目标UDP端点。 |
| buf | 数据缓冲区指针。 |
| len | 数据长度(字节)。 |
| afun | 收到回复时的回调,参数为回复数据指针和长度。 |
| bool ngl::asio_kcp::sendu_waitrecv | ( | const basio::ip::udp::endpoint & | aendpoint, |
| const std::shared_ptr< pack > & | apack ) |
发送序列化数据包并等待同一端点的回复。
| aendpoint | 目标UDP端点。 |
| apack | 已序列化的数据包。 |