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: