Skip to main content

Module envelope

Module envelope 

Source
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 抹平)。
OneshotReceiver
一次性接收端(recv 消费自身)。
OneshotSender
一次性发送端(共享引用可发;AtomicBool 守卫保证协议上只有第一次 send 生效)。

Enums§

OneshotErr
接收端错误。
ReplyErr
协议级错误(B 明确回)。

Functions§

e_req_type
寻址请求 type:eReq.<target>(精确 key,与 ek-event 精确匹配语义一致)。
e_to_type
定向通知 type:eTo.<target>。
oneshot
构造一对 one-shot 信道。