Skip to main content

Module protocol

Module protocol 

Source
Expand description

v2 帧协议:消息类型、帧编解码与载荷表示。

架构位置:前端 -> Tauri 命令 -> Bridge -> Writer/FrameCodec -> Python 进程。 本模块只描述线上格式,不涉及调用状态。Python 端对应 tauri_runtime.protocol 中的 pydantic 模型,两端以 python-sdk/tests/fixtures/golden_frames.json 逐字节对齐。

线上格式:[u32 BE 内层长度][u32 BE 头长度][头 JSON][body]。

  • 外层长度只计其后的字节,上限为 max_frame_size(默认 DEFAULT_MAX_FRAME_SIZE);
  • 头是以 type 字段区分的 JSON 对象(见 Message),未知字段被忽略;
  • JSON 载荷内联在头的 value 字段,二进制载荷放在 body 并在头中标记 raw: true; 未设置 raw 时 body 必须为空(见 Inline::join)。

不变量:头无法解码的帧只影响该帧本身,可以跳过;超限帧意味着对端异常,按致命错误处理 (见 FrameCodec)。

Structs§

AppInfo
ready 消息中携带的宿主应用信息,取自 Tauri 的 PackageInfo。
Frame
一个完整的协议帧:消息头加上可选的二进制 body。
FrameCodec
基于 length_codec 的帧解码器,用于读取 Python 的 stdout。
Inline
消息头中的载荷字段:JSON 载荷内联为 value,二进制载荷放在帧 body 中并以 raw: true 标记。

Enums§

Message
帧头,即以 type 字段区分的 JSON 对象。
Payload
与线上表示无关的载荷值。
ProtocolError
帧编解码过程中的错误。

Constants§

DEFAULT_MAX_FRAME_SIZE
默认的单帧大小上限(64 MiB),按外层长度前缀之后的字节数计算。
PROTOCOL_VERSION
当前协议版本,握手时 hello.protocol 必须与之相等,否则启动失败并返回 protocol_mismatch。

Functions§

length_codec
外层分帧编解码器:u32 大端长度前缀,帧长上限为 max_frame_size。