elbus 0.2.21

Local and network IPC bus
Documentation
ELBUS RPC layer specification
*****************************

.. contents::

A client can send and receive notifications, incoming calls and replies.

The layer completely replaces one-to-one messaging, all notifications must be
prefixed with 0x00 to tell the client that the frame is notification-only
event.

RPC calls can be also used as notifications. If call ID is set to zero, no
response is required from the other side.

The RPC layer is similar to `JSON RPC 2.0 <https://www.jsonrpc.org>`_, but
optimized for the byte protocol.

Payload bytes
=============

0 - event type
(0x0 - notification, 0x1 - request, 0x11 - reply, 0x12 - error reply)

for event:
1 - payload

Requests
--------

1-4 call ID
5- - method (str) 00 PARAMS

The parameters can be serialized in any way, msgpack is preferred. If call ID
is zero - no response is required.

Responses
---------

1-4 call ID
5- - response payload

for error response
1-4 call ID
5-6 - error code
7 - error payload

A response payload and error can be serialized in any way, for the payload
msgpack is preferred. for the error - str

When RPC layer is on, all messages are processed as RPC or event calls,
broadcasts and topics are processed as-is.

Error codes
-----------

The standard codes are sent as i16, in the format "-32000 - ELBUS_ERROR_CODE".