Expand description
请求应答信封与一次性信道(envelope + Oneshot)。
设计要点(P-H 执行期修订,审核记录于 TESTPLAN):
Envelope非泛型:payload: Arc<dyn Any + Send + Sync>+ erasure 回包reply: OneshotSender<Box<dyn Any + Send + Sync>>。 原因:若信封双层泛型<Req,Res>,一旦收发双方契约类型不同,收方整封 downcast 失败 拿不到回包 Sender,“错型必回 InvalidPayload” 无法实现(A 的 Res 只在 A 侧存在)。 抹平后的契约:B 拆 payload(错型→可回 Err(InvalidPayload)),A 收回包后自己 downcast 判定(错型同样落 InvalidPayload)。任何路径都不存在类型混淆(全部经 Any TypeId 校验)。- 一次性信道 = std::sync::mpsc(D5):零依赖;断连=TargetGone、超时=Timeout。
Structs§
- Envelope
- 寻址信封(非泛型,payload 抹平)。
- Oneshot
Receiver - 一次性接收端(recv 消费自身)。
- Oneshot
Sender - 一次性发送端(共享引用可发;AtomicBool 守卫保证协议上只有第一次 send 生效)。
Enums§
- Oneshot
Err - 接收端错误。
- Reply
Err - 协议级错误(B 明确回)。
Functions§
- e_
req_ type - 寻址请求 type:
eReq.<target>(精确 key,与 ek-event 精确匹配语义一致)。 - e_
to_ type - 定向通知 type:
eTo.<target>。 - oneshot
- 构造一对 one-shot 信道。