ZeroMQBlueprint - GobySoft/goby GitHub Wiki
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
- publisher A requests new entry to gobyd for type MyMessage on socket "ipc://publisherA-MyMessage".
- gobyd replies with acknowledgment of new entry MyMessage
- subscriber A requests list of entries from gobyd of type MyMessage.
- gobyd gives "ipc://publisherA-MyMessage" to subscriber A and adds subscriber A to notification list for MyMessage
- subscriber A subscribes to "ipc://gobyd-updates" for new MyMessage publishers
- subscriber A subscribes to "ipc://publisherA-MyMessage"
- publisher B requests new entry to gobyd for type MyMessage on socket "ipc://publisherB-MyMessage".
- gobyd replies with acknowledgment of new entry MyMessage
- gobyd publishes update to all "ipc://gobyd-updates" subscribers that "ipc://publisherB-MyMessage" is providing MyMessage as well.
- subscriber A receives update and subscribes to "ipc://publisherB-MyMessage"
Reliability? clients? gobyd?