Files
softbus_OPC/docs/softbus_transport.md
2026-06-09 17:27:24 +08:00

3.2 KiB
Raw Permalink Blame History

softbus_transport

路径: src/softbus_transport
构建目标: softbus_transportSTATIC 库)
层级: 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 枚举:RawPacketExecuteCommandUnknown
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_coreRawPacket
  • softbus_apiExecuteCommand
  • asioFetchContent standalonev1.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 二进制协议