opc source code

This commit is contained in:
flower_linux
2026-06-09 17:27:24 +08:00
parent 70f675a48b
commit f0da5cb3c3
2002 changed files with 269812 additions and 7 deletions

110
docs/softbus_transport.md Normal file
View File

@@ -0,0 +1,110 @@
# softbus_transport
**路径:** `src/softbus_transport`
**构建目标:** `softbus_transport`STATIC 库)
**层级:** L2 服务层
## 1. 概述
`softbus_transport` 实现边缘与守护进程之间的 **TCP 传输层**,定义 UplinkWire JSON 行协议,提供 Server守护进程监听与 Client边缘连接对称实现。
## 2. CONSTRAINTS
- 传输层仅负责 TCP 连接管理与线消息编解码,不包含业务解析逻辑。
- 消息格式遵循 [UPLINK_WIRE_PROTOCOL.md](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 standalonev1.30.2
- **被依赖:** softbus_edge, softbus_daemon
## 7. 构建
```cmake
add_library(softbus_transport STATIC ...)
target_link_libraries(softbus_transport PUBLIC softbus_core softbus_api asio)
```
## 8. Phase 2 规划
- 支持多边缘连接与连接池
- 增加断线重连与心跳机制
- 可选迁移至 SBUP 二进制协议