#rpc #no-std

no-std urpc

uRPC(发音为micro RPC)是一个简单且轻量级的RPC框架,专为嵌入式系统设计

4 个版本

0.2.0 2020年4月4日
0.1.0-alpha.22020年4月4日
0.1.0-alpha.12019年12月26日
0.1.0-alpha2019年12月22日

#1215 in 嵌入式开发

BSD-3-Clause

39KB
664

uRPC

uRPC(发音为micro RPC)是一个简单且轻量级的RPC框架,专为嵌入式系统设计。服务器端在无堆环境的 no_std 中运行,并应使用非常少的资源。当前的客户端实现需要 std

crates.io crates.io Released API docs

功能

  • 支持256种不同的方法。
  • 服务器端请求解析和回复序列化的低级原语。
  • 单个任何 sedre::Serialize + serde::DeserializeOwned 类型的参数。
  • 可选的参数字节缓冲区,不涉及任何缓冲区复制。
    • 此功能旨在优化客户端和服务器之间字节传输,以最小化服务器使用的内存量。
  • 任何 sedre::Serialize + serde::DeserializeOwned 类型的单个返回值。
  • 可选的回复字节缓冲区 不涉及任何缓冲区复制
    • 此功能旨在优化客户端和服务器之间字节传输 最小化客户端使用的内存量
  • 方法可以返回自定义错误。
  • 异步方法。
    • 支持保持255个未完成的异步请求。
  • 流方法。

备注

当前的客户端实现需要 paste crate。将其添加到您的 Cargo.toml

[dependencies]
paste = "0.1.7"

数据包格式

  • 请求数据包由一个7字节头、可选的主体和可选的字节缓冲区组成。
  • 回复数据包由一个6字节头、可选的主体和可选的字节缓冲区组成。

请求头

长度 描述
8b 方法索引
8b 通道ID
8b 选项
16b 主体长度(小端序)
16b 可选缓冲区长度(小端序)

回复头

长度 描述
8b 通道ID
8b 选项
16b 主体长度(小端序)
16b 可选缓冲区长度(小端序)

示例

参见 examples/requests.rs

许可证

代码在3条款BSD许可证下发布。

依赖项

~1.3–2MB
~44K SLoC