Skip to content

Communication protocol

dvinc edited this page Nov 19, 2013 · 1 revision

This document is for VIBes client<->viewer communication protocol and data format specification.

Communication channel

VIBes messages can be transferred by

  • named pipes
  • files
  • TCP sockets

Communication channel can be either unidirectional (batch) or bidirectional (interactive).

Rationale:

Most often, the viewer will be run on the same machine as the client program. Named-pipes are fast for local IPC. Once the fifos are created, communication is done like through a file. The platform-specific named-pipe creation (e.g mkfifo) can be done by the viewer. The client thus remains very portable (open a file). File opening and writing functions are available in almost every language without the need from additional libraries. Since named-pipes are often unidirectional, two pipes may have to be created if interactive communication is needed. Moreover, if several clients talk simultaneously to the viewer, the pipe may not be shared.

Files are useful if you don't have a permanent connection with the system running the program and want to gather the results only once computation has been done. It can be useful for batch processing. File communication comes at no cost if unidirectional named-pipe communication is implemented. File communication requires that all basic commands can be run in unidirectional non-interactive mode.

Design constraints:

Clone this wiki locally