关于 raptor-lite 中各种 Property 的说明文档,Property 各种定义见 config.h 文件。
raptor_error CreateAcceptor(const Property &p, Acceptor **out);
名称 | 约束 | 说明 |
---|---|---|
kAcceptorHandler | required | 响应客户端连接成功事件, 无默认值 |
raptor_error CreateClient(const Property &p, Client **out);
名称 | 约束 | 说明 |
---|---|---|
kClientHandler | required | 响应客户端连接相关的网络事件, 无默认值 |
kHeartbeatInterval | optional | 自动心跳的间隔时间,默认为0,表示不自动心跳 |
kMaxRecvTimeoutMs | optional | 允许服务端不发送数据的最大空闲时间, 默认为0,表示不作检查 |
raptor_error CreateConnector(const Property &p, Connector **out);
名称 | 约束 | 说明 |
---|---|---|
kConnectorHandler | required | 响应与服务器连接的结果事件, 无默认值 |
kTcpUserTimeoutMs | optional | SOCKET 选项 TCP_USER_TIMEOUT, 默认为0 |
raptor_error CreateContainer(const Property &p, Container **out);
名称 | 约束 | 说明 |
---|---|---|
kMessageHandler | required | 接收远端节点发来的数据, 无默认值 |
kProtocolHandler | optional | 协议解析接口, 默认为 nullptr |
kHeartbeatHandler | optional | 接收心跳相关的事件, 默认为 nullptr |
kEndpointClosedHandler | optional | 接收远端节点断开的事件, 默认为 nullptr |
kCoreEventThreads | optional | 事件响应线程数量设置, 默认为1, 影响 IOCP/EPOLL 工作线程 |
kRecvSendThreads | optional | 数据收发线程数量设置, 默认为1, 影响 RECV/SEND 工作线程 |
kInitContainerSize | optional | 容器初始连接数量, 默认 128 |
kMaxContainerSize | optional | 可以容纳同时在线的连接数量的上限, 默认为 8192 |
kCheckReceivingInterval | optional | 是否检测连接接收超时, 默认 false, 为 true 时 kMaxReceivingInterval 生效 |
kMaxReceivingInterval | optional | 连接多久未收到数据即认为超时, 设置最大的超时时间, 默认 300000 毫秒 |
示例: 创建 Container 时, 先设置好各种属性.
RaptorEngine engine = RaptorCreateEngine();
raptor::Container *container = nullptr;
raptor::Property property{
{raptor::config::kAcceptorHandler, static_cast<AcceptorHandler *>(&obj)},
{raptor::config::kMessageHandler, static_cast<MessageHandler *>(&obj)},
{raptor::config::kHeartbeatHandler, static_cast<HeartbeatHandler *>(&obj)},
{raptor::config::kEndpointClosedHandler, static_cast<EndpointClosedHandler *>(&obj)}};
raptor_error err = engine->CreateContainer(property, &container);
使用 AcceptorHandler 和 ConnectorHandler 时会用到
名称 | 约束 | 说明 |
---|---|---|
kUserCustomValue | optional | 获取调用 Connector->Connect() 时传入的自定义参数, 默认为 0 |
kSocketNoSIGPIPE | optional | 设置是否禁用 SIGPIPE, 默认为 true |
kSocketReuseAddress | optional | 设置 SOCKET 选项 SO_REUSEADDR, 默认为 true |
kSocketReusePort | optional | 设置 SOCKET 选项 SO_REUSEPORT, Acceptor 默认为 true |
kSocketRecvTimeoutMs | optional | 设置 SOCKET 选项 SO_RCVTIMEO, int 类型 |
kSocketSendTimeoutMs | optional | 设置 SOCKET 选项 SO_SNDTIMEO, int 类型 |
kSocketLowLatency | optional | 设置 SOCKET 选项 TCP_NODELAY, 默认为true |
kSocketNonBlocking | optional | 设置非阻塞模式, 默认为true |
class AcceptorHandler {
public:
virtual ~AcceptorHandler() {}
virtual void OnAccept(Endpoint ep, Property &settings) = 0;
};
class ConnectorHandler {
public:
virtual ~ConnectorHandler() {}
virtual void OnConnect(Endpoint ep, Property &settings) = 0;
};
示例: 当 OnAccept
或 OnConnect
被调用即表示成功建立了连接, 此时 Endpoint
中包含连接的信息, 通过修改 settings
设置连接的各种 SOCKET 属性.
// set property
settings({
{raptor::config::kSocketRecvTimeoutMs, 5000},
{raptor::config::kSocketSendTimeoutMs, 5000}
});
示例:当 OnConnect
被调用时, 通过 settings
获取 kUserCustomValue
得到自定义参数.
// get user custom value (OnConnect)
uintptr_t current_index = settings.GetValue<uintptr_t>(raptor::config::kUserCustomValue);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )