3.2 KiB
3.2 KiB
softbus_transport
路径: src/softbus_transport
构建目标: softbus_transport(STATIC 库)
层级: L2 服务层
1. 概述
softbus_transport 实现边缘与守护进程之间的 TCP 传输层,定义 UplinkWire JSON 行协议,提供 Server(守护进程监听)与 Client(边缘连接)对称实现。
2. CONSTRAINTS
- 传输层仅负责 TCP 连接管理与线消息编解码,不包含业务解析逻辑。
- 消息格式遵循 UPLINK_WIRE_PROTOCOL.md,不得引入私有扩展字段而不更新协议文档。
- Server 与 Client 均基于 asio 异步 I/O,不得阻塞调用线程。
- 传输层不得直接操作 OPC UA 或插件。
3. 核心组件
3.1 UplinkWire — 线协议
| 类型/函数 | 说明 |
|---|---|
WireMessageType |
枚举:RawPacket、ExecuteCommand、Unknown |
WireMessage |
解码结果联合体 |
encodeWireMessage(RawPacket) |
上行编码 |
encodeWireMessage(ExecuteCommand) |
下行编码 |
decodeWireMessage(line) |
单行解码 |
base64Encode / base64Decode |
payload 编解码 |
3.2 TcpUplinkServer — 守护进程侧
| 方法 | 说明 |
|---|---|
TcpUplinkServer(io_context, host, port) |
构造,绑定监听地址 |
start() |
启动 acceptor |
stop() |
停止服务 |
setRawPacketHandler(handler) |
注册上行回调 function<void(RawPacket)> |
sendCommand(ExecuteCommand) |
向已连接边缘发送下行命令 |
行为:
- 监听 TCP 端口,接受边缘连接
- 按
\n分行读取,解码rawPacket消息 - 触发
rawHandler回调 - 通过
sendCommand向边缘推送executeCommand
3.3 TcpUplinkClient — 边缘侧
| 方法 | 说明 |
|---|---|
TcpUplinkClient(io_context, host, port) |
构造,指定守护进程地址 |
connect() |
连接守护进程 |
disconnect() |
断开连接 |
sendRawPacket(RawPacket) |
发送上行原始包 |
poll() |
轮询接收下行命令 |
setCommandHandler(handler) |
注册命令回调 function<void(ExecuteCommand)> |
4. 数据流
4.1 上行
Edge: UplinkClient.sendRawPacket(packet)
→ encodeWireMessage(packet) + "\n"
→ TCP send
→ Server: handleLine(line)
→ decodeWireMessage(line)
→ rawHandler(rawPacket)
4.2 下行
Daemon: CommandDispatcher.dispatch(cmd)
→ TcpUplinkServer.sendCommand(cmd)
→ encodeWireMessage(cmd) + "\n"
→ TCP send
→ Client: handleLine(line)
→ decodeWireMessage(line)
→ commandHandler(cmd)
5. 配置
| 配置项 | 来源 | 默认值 |
|---|---|---|
uplink.listenHost |
daemon_profile.json |
127.0.0.1 |
uplink.listenPort |
daemon_profile.json |
9000 |
| Edge 连接地址 | CLI --daemon host:port |
127.0.0.1:9000 |
6. 依赖
softbus_core(RawPacket)softbus_api(ExecuteCommand)asio(FetchContent standalone,v1.30.2)- 被依赖: softbus_edge, softbus_daemon
7. 构建
add_library(softbus_transport STATIC ...)
target_link_libraries(softbus_transport PUBLIC softbus_core softbus_api asio)
8. Phase 2 规划
- 支持多边缘连接与连接池
- 增加断线重连与心跳机制
- 可选迁移至 SBUP 二进制协议