urpc

Crates.iourpc
lib.rsurpc
version0.2.0
sourcesrc
created_at2019-12-22 19:40:42.12024
updated_at2020-04-04 23:11:18.813238
descriptionuRPC (pronounced micro RPC) is a simple and lightweight RPC framework designed with embedded systems in mind.
homepage
repositoryhttps://github.com/dhole/urpc
max_upload_size
id191572
size53,612
Dhole (Dhole)

documentation

README

uRPC

uRPC (pronounced micro RPC) is a simple and lightweight RPC framework designed with embedded systems in mind. The server side works in a heapless environment with no_std and is supposed to use very low resources. The current client side implementation requires std.

crates.io crates.io Released API docs

Features

  • Support for 256 different methods.
  • Low level primitives for the server side regarding request parsing and reply serializing.
  • Single argument of any sedre::Serialize + serde::DeserializeOwned type.
  • Optional byte buffer for the argument that doesn't involve any buffer copy.
    • This feature is designed to optimize the transfer of bytes between client and server minimizing the amount of used memory in the server.
  • Single return value of any sedre::Serialize + serde::DeserializeOwned type.
  • Optional byte buffer for the reply that doesn't involve any buffer copy.
    • This feature is designed to optimize the transfer of bytes between client and server minimizing the amount of used memory in the client.
  • Methods can return custom errors.
  • Asyncrhonous methods.
    • Support for holding 255 async uncompleted requests.
  • Stream methods.

Notes

The current client implementation requires the paste crate. Add this to your Cargo.toml:

[dependencies]
paste = "0.1.7"

Packet format

  • The request packet consists of a 7 byte header, an optional body and an optional byte buffer.
  • The reply packet consists of a 6 byte header, an optional body and an optional byte buffer.

Request Header

length desc
8b method index
8b channel id
8b options
16b body length (little endian)
16b optional buffer length (little endian)

Reply Header

length desc
8b channel id
8b options
16b body length (little endian)
16b optional buffer length (little endian)

Examples

See examples/requests.rs

License

The code is released under the 3-clause BSD License.

Commit count: 51

cargo fmt