Skip to content

Rust — 核心类型

nnrp-core 是 NNRP/1 Preview4 协议语义的 canonical Rust 来源。它拥有 wire 常量、固定布局 metadata、profile registry、runtime-control frame、object/cache metadata、校验逻辑和可复用生命周期状态机。

Dependency

toml
[dependencies]
nnrp-core = "1.0.0-preview.4.0"

边界

nnrp-core 不打开 socket,也不启动 async task。它定义并校验协议模型,供 nnrp-runtime、transport provider、FFI binding、WASM helper 和 conformance suite 复用。

主要类型族

类型族示例使用方
Protocol header 与 message idcommon header、message type、header flags、protocol version所有 wire codec
Session lifecycleSessionOpenMetadataSessionCloseMetadata、patch/migrate metadataclient/server runtime
Submit/resultFrameSubmitMetadataResultPushMetadata、result-drop metadatarequest/result flow
Flow 与 schedulingcredit、backpressure、priority、deadline、expire-at metadataruntime control
Runtime controlcancel/abort、progress、partial result、capability、route hint、trace contextPreview4 control profiles
Runtime objectobject declare/ref/release/delta metadataheavy transport 与 orchestration 路径
Cache referencecache reference/miss/invalidate metadatacache-aware profile 与 runtime
Registryprofile id、schema id、payload family、object kindconformance 与 SDK 校验

FrameSubmitMetadata

字段组说明
Profile 与 schema选择解释 body 的标准或应用 profile。
Operation identity关联 submit、result、cancellation 和 runtime feedback。
Priority 与 deadline提供调度 hint,不要求额外 JSON/protobuf control envelope。
Object/cache hints允许 transport 和 runtime 协调大 payload reference。

ResultPushMetadata

字段组说明
Correlation将 result bytes 关联回已提交 frame。
Status 与 timing携带完成状态和 timing hint。
Payload interpretation指向 result body 使用的 profile/schema。

Runtime-Control Metadata

Rust metadata 名称与 运行时控制 Profiles 中冻结的 wire profiles 对齐。

Control family目的
Cancel / abort停止过期或不再需要的工作。
Priority / deadline / expire-atSubmit 后更新调度决策。
Progress / partial result流式返回有意义的中间结果。
Backpressure / credit协调生产者和消费者压力。
Capability / route hint交换成本、偏好、限制和执行 hint。
Trace context / result-drop reason让端到端计时和丢弃原因可解释。

Object And Cache Metadata

Family目的
Object declare用 kind、size、version 和 lifetime hint 声明 runtime object。
Object ref引用已有 object,而不是重新发送 bytes。
Object release释放 ownership 或 lease state。
Object delta对已有 object 发送紧凑更新。
Cache reference报告可复用的 cached object。
Cache miss报告请求的 cache key 不可用。
Cache invalidate失效过期 object/cache state。

常见问题

WARNING

  1. 不要在 SDK 本地代码重新分配 numeric message、profile、schema、object-kind 或 error value。
  2. 不要把 transport 行为塞进 nnrp-core;使用 nnrp-runtime 和 provider crates。
  3. 如果已经有紧凑控制帧,不要再把 Preview4 控制语义塞进临时 JSON。

NNRP Documentation