rawbusmessage
This commit is contained in:
28
docs/数据流转.md
28
docs/数据流转.md
@@ -70,7 +70,7 @@
|
||||
|
||||
输出:`frameKind = CompleteFrame` 的帧批次。
|
||||
|
||||
### 3.3 Stage 2/3/4:解析 -> 过滤 -> 校验
|
||||
### 3.3 Stage 2/3/4:解析 -> 过滤 -> 校验(当前返回语义)
|
||||
|
||||
`runStages234(...)` 核心流程:
|
||||
|
||||
@@ -83,10 +83,13 @@
|
||||
3. **Stage4 Validator**
|
||||
- 最低校验当前为 `messageId` 非空。
|
||||
4. **Transform/Enrich**
|
||||
- 应用动态规则(scale/offset/unit)。
|
||||
- 仅对通过 filter+validator 的 `DOMMessage` 应用动态规则(scale/offset/unit)。
|
||||
- 写入 trace,补充富化字段。
|
||||
|
||||
说明:当前 `runStages234` 只返回布尔结果,`EnrichedMessage` 由内部生成,后续可接持久化/发布环节。
|
||||
说明(与代码一致):
|
||||
- `runStages234` 在 `stage2Parser` 返回空时才返回 `false`。
|
||||
- 只要 `stage2Parser` 有消息,哪怕全部在 Stage3/Stage4 被跳过,当前实现仍返回 `true`。
|
||||
- `EnrichedMessage` 在内部生成,但尚未进入独立发布/持久化通道。
|
||||
|
||||
### 3.4 出口与有序保证
|
||||
|
||||
@@ -101,12 +104,12 @@
|
||||
|
||||
## 4. 错误与背压点
|
||||
|
||||
主要失败点及表现:
|
||||
主要失败点及表现(按当前实现):
|
||||
|
||||
1. **内存池分配失败**:`SerialDevice::onRead` 直接 `reportError(memory pool exhausted)`。
|
||||
2. **入口队列满**:`enqueueIngress` 返回 false,计入 drop。
|
||||
3. **分帧/解析插件缺失或失败**:对应帧在阶段中被丢弃。
|
||||
4. **过滤/校验失败**:消息跳过,不进入下游。
|
||||
3. **分帧/解析/映射插件缺失或失败**:`stage2Parser` 返回空,`runStages234=false`,该帧不进入 egress。
|
||||
4. **过滤/校验失败**:对应 `DOMMessage` 被跳过(不做 enrich),但该 `PipelineContext` 仍可能继续进入 egress(只要 Stage2 非空)。
|
||||
5. **重排深度超限**:`mergeDrop` 增加并告警。
|
||||
|
||||
---
|
||||
@@ -125,16 +128,19 @@ SerialQtDriver(read callback)
|
||||
-> [Stage4] validate
|
||||
-> transform/enrich
|
||||
-> egressQ (有序模式下先 merge 再 egress)
|
||||
-> DeviceBusManager::processEgressLoop
|
||||
-> EgressRouter::send
|
||||
-> SerialDevice::writePayload
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 下行(现状)
|
||||
## 6. egress 到设备(现状)
|
||||
|
||||
- `RawBusMessage.direction` 已支持 `Downstream` 语义。
|
||||
- `SerialDevice` 已提供 `writePayload(...)` 写入能力。
|
||||
- 当前代码中 egress 路由到物理设备的绑定仍预留(`SerialDeviceManager` 里相关逻辑已注释),后续可补齐:
|
||||
- egress 消息 -> `EgressRouter` -> endpoint 设备 -> `writePayload`。
|
||||
- `DeviceBusManager` 已启动 `processEgressLoop`,持续从 `PipelineEngine::tryPopEgress` 取数据并调用 `EgressRouter::send`。
|
||||
- `EgressRouter` 已实现 `endpoint -> SerialDevice` 查找和 `writePayload(...)` 发送。
|
||||
- 当前关键缺口:`SerialDeviceManager::initializeSerialDeviceWithDeps` 中 `bindSerialDevice(...)` 仍被注释,导致路由表通常为空,`send` 多数返回失败。
|
||||
- 因此当前链路是“egress 框架已存在,但默认没有绑定到串口实例”。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user