1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/shadowyuan-raptor-lite

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
property.md 5.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
shadow-yuan Отправлено 24.07.2022 17:30 a18b676

Property

关于 raptor-lite 中各种 Property 的说明文档,Property 各种定义见 config.h 文件。

对象属性

Acceptor

raptor_error CreateAcceptor(const Property &p, Acceptor **out);
名称 约束 说明
kAcceptorHandler required 响应客户端连接成功事件, 无默认值

Client

raptor_error CreateClient(const Property &p, Client **out);
名称 约束 说明
kClientHandler required 响应客户端连接相关的网络事件, 无默认值
kHeartbeatInterval optional 自动心跳的间隔时间,默认为0,表示不自动心跳
kMaxRecvTimeoutMs optional 允许服务端不发送数据的最大空闲时间, 默认为0,表示不作检查

Connector

raptor_error CreateConnector(const Property &p, Connector **out);
名称 约束 说明
kConnectorHandler required 响应与服务器连接的结果事件, 无默认值
kTcpUserTimeoutMs optional SOCKET 选项 TCP_USER_TIMEOUT, 默认为0

Container

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;
};

示例: 当 OnAcceptOnConnect 被调用即表示成功建立了连接, 此时 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/shadowyuan-raptor-lite.git
git@api.gitlife.ru:oschina-mirror/shadowyuan-raptor-lite.git
oschina-mirror
shadowyuan-raptor-lite
shadowyuan-raptor-lite
master