Skip to content

ZeroMQBlueprint

Toby Schneider edited this page May 26, 2016 · 3 revisions

Wire specification [uint32 - protocol specification (e.g. CCL, DCCL, Protobuf, ... )][type/name/subname/subsubname][body of message (variable bytes)]

e.g. [00000000000001][MyMessage][0x2bacd34ef34...] which is 0x000000014d794d6573736167652bacd34ef34...

Protocol specification:

  • protobuf = 1
  • CCL = 2
  • DCCL = 3
  • LCM = 4

PGM (reliable multicast) Possibility

No centralized daemon; works similar to LCM

TCP / Unix Sockets Possibility

gobyd serves a local list of publishers and their applicable sockets.

  • upon request it will provide the current list of publishers for a given variable type.
  • applications can also subscribe to updates to the list.
  • upon request it can update its list with a new publisher

Sequence of actions

  1. publisher A requests new entry to gobyd for type MyMessage on socket "ipc://publisherA-MyMessage".
  2. gobyd replies with acknowledgment of new entry MyMessage
  3. subscriber A requests list of entries from gobyd of type MyMessage.
  4. gobyd gives "ipc://publisherA-MyMessage" to subscriber A and adds subscriber A to notification list for MyMessage
  5. subscriber A subscribes to "ipc://gobyd-updates" for new MyMessage publishers
  6. subscriber A subscribes to "ipc://publisherA-MyMessage"
  7. publisher B requests new entry to gobyd for type MyMessage on socket "ipc://publisherB-MyMessage".
  8. gobyd replies with acknowledgment of new entry MyMessage
  9. gobyd publishes update to all "ipc://gobyd-updates" subscribers that "ipc://publisherB-MyMessage" is providing MyMessage as well.
  10. subscriber A receives update and subscribes to "ipc://publisherB-MyMessage"

Reliability? clients? gobyd?