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_stdand is supposed to use very low resources. The current client side implementation requiresstd.
- 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::DeserializeOwnedtype. - 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::DeserializeOwnedtype. - 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.
- This feature is designed to optimize the transfer of bytes between client
and server
- Methods can return custom errors.
- Asyncrhonous methods.
- Support for holding 255 async uncompleted requests.
- Stream methods.
- 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.
| length | desc |
|---|---|
| 8b | method index |
| 8b | channel id |
| 8b | options |
| 16b | body length (little endian) |
| 16b | optional buffer length (little endian) |
| length | desc |
|---|---|
| 8b | channel id |
| 8b | options |
| 16b | body length (little endian) |
| 16b | optional buffer length (little endian) |
The code is released under the 3-clause BSD License.