架构
sequenceDiagram
定时器检查
flowchart TB
N0[void *args]
N1[entry, list, &g_urpc_keepalive_mgmt.reachable_list]
N2[current_time - entry->timestamp > check_time]
N3[URPC_KEEPALIVE_FAILED, info]
N4[delay_release_time, ...]
N5[entry->timer, check_time, urpc_keepalive_check, ...]
保活消息格式
保活消息复用 URPC REQ 头格式,使用专用 function ID:
// protocol.h:
#define URPC_KEEPALIVE_FUNCTION_ID (0x002001000005)
#define URPC_KEEPALIVE_HDR_SIZE (sizeof(urpc_req_head_t) + sizeof(urpc_keepalive_head_t))
// keepalive_head 结构:
typedef struct urpc_keepalive_head {
uint8_t version : 4;
uint8_t is_rsp : 1; // 是否为响应
uint8_t status; // 处理结果
uint16_t l_qid; // 本地队列 ID
uint32_t server_channel : 24;
uint32_t rsvd[9]; // 最后 28B 用于加密头
} urpc_keepalive_head_t;
配置参数
| 参数 | 范围 | 默认值 | 说明 |
|---|---|---|---|
keepalive_cycle_time | [1, 3600] s | 必填 | 保活消息发送间隔 |
keepalive_check_time | [cycle_time, 3600] s | 必填 | 超时判定时间 |
delay_release_time | [1, 3600] s | 必填 | 超时后延迟释放时间 |
q_depth | [1, 128] | 128 | 保活队列深度 |