1 unstable release

Uses new Rust 2024

0.1.1 Aug 25, 2025

#2168 in Algorithms


Used in frib_datasource

LGPL-3.0-or-later and GPL-2.0 licenses

63KB
1K SLoC

rust_ringmaster_client

Rust client for FRIB/NSCLDAQ ring; master server. Best way to look at docs is to pull the repository down and

cargo doc --no-deps --open

Note that at some point this will be published to crates.io at which point docs will be available on the Rust docs site.


lib.rs:

Client library for a ringmaster_client. THe ring master advertises the RING_MASTER service on the port manager. It accepts several textual requests:

  • CONNECT - connects us, the client to a ring, either as a producer or a consumer.
  • DISCONNECT - disconnects an existing client from a ring.
  • LIST - returns a list of rings and their statistics. this is in the form of a Tcl list and we include a simple list parsing package.
  • REGISTER - registers the creation of a new ringbuffer.
  • UNREGISTER - informs the ring master of a ring destruction.
  • REMOTE - asks the ringmaster to set up a ring2stdout that will then ship data across the connection. This supports obtainng data from remote ringbuffers.

It is intended that this crate be used in conjunction with the nscldaq_ringbuffer package to correctly access rings.

Note: Tests for this 6crate must be run with --test-threads 1 or they will fail. Alternatives will essentially serialize anyway by e.g. entering a mutex when a test starts and then exiting it...so the only point of that would be to make it not necessary for the user to supply -- --test-threads 1 to Cargo test.

Dependencies

~5–12MB
~225K SLoC