Clients
Data/Image/Command clients: publish/subscribe communication (TCP/IPC), with connection targets set by the central configuration.
Quatm’s services communicate over ZeroMQ. The design keeps the timing path independent of rendering, and makes local and remote clients interchangeable.
Each data type has a Hub that collects and redistributes messages:
Clients connect to the Hubs they need. A client process does not need to know which other clients exist, and a Hub failure is visible and restartable.
| Client | Purpose |
|---|---|
DataClient | subscribe to scalar data series |
ImageClient | subscribe to camera images |
CommandClient | send commands to a controller |
MessageClient | publish and receive operational messages |
Properties | synchronise the distributed property tree |
The property tree is the shared configuration and state model. Properties are read and written by name through a filesystem-like path; the Property Logger persists the tree and applies the persistence policy. GUI panels, web dashboards and experiment code all read the same values.
Remote property writes use a persistent publisher and explicit acknowledgement, so a remote action is not silently lost when a connection is slow.
Curve encryption is available for local and network channels. The transport layer also handles multipart framing, malformed-frame recovery and request timeouts.
Endpoints, project root and service selection are read from the project’s configuration/ directory. A service can be launched by the Operations Console, by a project launcher, or directly as a Python module for debugging.
Data/Image/Command clients: publish/subscribe communication (TCP/IPC), with connection targets set by the central configuration.
Distributed hierarchical property tree: the local copy is synchronized bidirectionally through the Property Hub and Propertylogger.
Multi-stream data aggregation: aligned to each experiment run, missing streams zero-filled on timeout, then written to HDF5.
Standardized message stream client: sends timestamped, source-tagged messages to the Message Hub.
configreader + propertylogger: reading JSON configuration, persisting the property tree and monitoring active streams.
Peripheral services such as InfluxDB, notification push, the image network server, the Web Hub and the XSUB/XPUB proxy.