传输层架构

URPC 控制面使用 TCP/IP 连接传输控制消息(attach/detach/keepalive 等)。

flowchart TB N0[// transport.c: 控制面 IP 传输] N2[// └─ Client 端:发起 TCP 连接 → SSL 握手 → 发送控制消息] N1 --> N2 N3[// 关键数据结构:] N2 --> N3 N5[urpc_server_accept_manager // Server 连接管理] N4 --> N5

SSL 握手流程

flowchart TB N0[sockfd, false] N1[ssl, &err] N2[sockfd, true]

控制消息处理

flowchart TB N0[msg_type, ctrl_msg]

Server 端管理

flowchart TB N0[// ip_handshaker.c: Server 端监听与接受] N1[int ip_handshaker_init] N0 --> N1 N2[ip_create_listen_fd; // 创建监听 socket] N1 --> N2 N3[urpc_mange_event_register; // 注册事件监听] N2 --> N3 N4[ip_handle_listen_event; // 处理连接请求] N3 --> N4 N6[// server_manage_channel.c: Server 通道管理] N5 --> N6 N7[// ├─ server_manage_channel_init → 初始化通道表] N6 --> N7 N8[// ├─ server_manage_channel_put → 注册通道] N7 --> N8

Client 端管理

flowchart TB N0[// client_manage_channel.c: Client 通道管理] N1[// ├─ client_manage_channel_init → 初始化通道表] N0 --> N1 N2[// ├─ client_channel_connect → 发起连接] N1 --> N2 N3[// └─ client_channel_disconnect → 断开连接] N2 --> N3 N4[// 连接建立流程:] N3 --> N4 N5[// 1. urpc_channel_server_attach → 发起 attach 请求] N4 --> N5 N6[// 2. client_connect_entry_get → 查找/创建连接条目] N5 --> N6 N7[// 3. create_connection → 建立 TCP 连接] N6 --> N7 N8[// 4. client_do_ssl_handshake → SSL 握手] N7 --> N8 N9[// 5. 交换 bind_info → 建立逻辑连接] N8 --> N9