4 个版本
0.2.0 | 2020年4月4日 |
---|---|
0.1.0-alpha.2 | 2020年4月4日 |
0.1.0-alpha.1 | 2019年12月26日 |
0.1.0-alpha | 2019年12月22日 |
#1215 in 嵌入式开发
39KB
664 行
uRPC
uRPC(发音为micro RPC)是一个简单且轻量级的RPC框架,专为嵌入式系统设计。服务器端在无堆环境的
no_std
中运行,并应使用非常少的资源。当前的客户端实现需要std
。
功能
- 支持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 | 可选缓冲区长度(小端序) |
示例
许可证
代码在3条款BSD许可证下发布。
依赖项
~1.3–2MB
~44K SLoC