io_event Class¶
网络事件由 io_service 线程产生。
语法¶
成员¶
公共方法¶
Name | Description |
---|---|
io_event::kind | 获取事件类型 |
io_event::status | 获取事件状态 |
io_event::passive | 检查是否是被动事件 |
io_event::packet | 获取事件消息包 |
io_event::packet_view | 获取事件消息包view |
io_event::timestamp | 获取事件时间戳 |
io_event::transport | 获取事件传输会话 |
io_event::transport_id | 获取事件传输会话ID |
io_event::transport_ud | 设置或获取事件传输会话用户数据 |
io_event::kind¶
获取事件类型。
返回值¶
事件类型,可以是以下值:
YEK_ON_PACKET
: 消息事件YEK_ON_OPEN
: 打开事件,对于客户端信道,代表连接响应YEK_ON_CLOSE
: 关闭事件,对于客户端信道,代表连接丢失
io_event::status¶
获取事件状态。
返回值¶
- 0: 正常
- 非0: 出错, 用户只需要简单打印即可。
io_event::passive¶
检查是否是被动事件
返回值¶
- 0: 非被动事件,包括客户端信道的连接打开、关闭事件和传输会话的消息事件。
- 1: open或close服务器信道时产生,仅当打开编译配置
YASIO_ENABLE_PASSIVE_EVENT
才会产生。
且为保持兼容,此行为默认是关闭的。
io_event::packet¶
获取事件携带的消息包
返回值¶
消息数据的view。
io_event::packet_view¶
获取事件携带的消息数据view,仅当io_service设置YOPT_S_FORWARD_PACKET
时有效。此数据在事件回调结束后会失效,业务应及时保存。
返回值¶
消息包的引用, 用户可以使用std::move
无GC方式从事件取走消息包。
io_event::timestamp¶
获取事件产生的微秒级时间戳。
返回值¶
和系统时间无关的微秒级时间戳。
io_event::transport¶
获取事件的传输会话句柄。
返回值¶
返回句柄,当收到断开事件时,传输会话句柄已失效,仅可用作地址值比较。
io_event::transport_id¶
获取事件的传输会话ID。
返回值¶
32位无符号整数范围内的唯一ID。
io_event::transport_ud¶
设置或获取传输会话用户数据。
template<typename _Uty>
_Uty io_event::transport_ud();
template<typename _Uty>
void io_event::transport_ud(_Uty uservalue);
注意¶
用户需要自己管理 userdata 的内存, 例如:
- 收到连接建立成功事件时存储userdata
- 收到连接丢失事件时清理userdata