AkiraKan Fusion Box Protocol Definition#
The AkiraKan fusion box encodes data processing results with FlatBuffers and sends it through TCP using ZeroMQ to enable low latency reliable transport.
FlatBuffers is language agnostic and cross-platform. It is very similar to Protocol Buffers, with the primary difference being that FlatBuffers does not need a parsing/unpacking step to a secondary representation before you can access data; Hence, FlatBuffers is memory efficient and low latency.
Our ZeroMQ network is configured in a Publish-Subscribe (Pub-Sub) and Push-Pull data distribution pattern where the sender / publisher of messages (AkiraKan fusion box), do not explicitly specify the receivers / subscribers.
With the exception of point cloud data which uses Push-Pull, all other data are broadcasted via Pub-Sub.
For Push-Pull, only one subscriber can pull from the publisher in a one-to-one pattern. If multiple subscriber are connected, each subscriber will only receive a subset of the data because a Push socket will distribute sent messages to its Pull clients evenly.
For Pub-Sub, multiple subscribers can subscribe to the publisher in a one-to-many pattern. Each subscriber will receive the same set of data.
Role |
Bind or Connect |
Note |
---|---|---|
Publisher |
socket.bind |
AkiraKan fusion box |
Subscriber |
socket.connect |
Users (more than 1 user can subscribe simultaneously and get same data from publisher) |
Note
When a publisher has no connected subscribers, then it will simply drop all messages.
If a subscriber is slow, then it will only receive the latest message from the publisher. This applies to all messages (Pub-Sub, Push-Pull).
The AkiraKan Fusion Box generates the following messages: