pub struct AeronCnc { /* private fields */ }Implementations§
Source§impl AeronCnc
impl AeronCnc
Sourcepub fn new_zeroed_on_heap() -> Self
pub fn new_zeroed_on_heap() -> Self
creates zeroed struct where the underlying c struct is on the heap
Sourcepub fn new_zeroed_on_stack() -> Self
pub fn new_zeroed_on_stack() -> Self
creates zeroed struct where the underlying c struct is on the stack (Use with care)
Sourcepub fn constants(
&self,
constants: &AeronCncConstants,
) -> Result<i32, AeronCError>
pub fn constants( &self, constants: &AeronCncConstants, ) -> Result<i32, AeronCError>
Sourcepub fn get_constants(&self) -> Result<AeronCncConstants, AeronCError>
pub fn get_constants(&self) -> Result<AeronCncConstants, AeronCError>
Fetch the sets of constant values associated with this command and control file.
Sourcepub fn to_driver_heartbeat(&self) -> i64
pub fn to_driver_heartbeat(&self) -> i64
Gets the timestamp of the last heartbeat sent to the media driver from any client.
§Return
last heartbeat timestamp in ms.
Sourcepub fn error_log_read<AeronErrorLogReaderFuncHandlerImpl: AeronErrorLogReaderFuncCallback>(
&self,
callback: Option<&Handler<AeronErrorLogReaderFuncHandlerImpl>>,
since_timestamp: i64,
) -> usize
pub fn error_log_read<AeronErrorLogReaderFuncHandlerImpl: AeronErrorLogReaderFuncCallback>( &self, callback: Option<&Handler<AeronErrorLogReaderFuncHandlerImpl>>, since_timestamp: i64, ) -> usize
Sourcepub fn error_log_read_fn<AeronErrorLogReaderFuncHandlerImpl: FnMut(i32, i64, i64, &str)>(
&self,
callback: AeronErrorLogReaderFuncHandlerImpl,
since_timestamp: i64,
) -> usize
pub fn error_log_read_fn<AeronErrorLogReaderFuncHandlerImpl: FnMut(i32, i64, i64, &str)>( &self, callback: AeronErrorLogReaderFuncHandlerImpl, since_timestamp: i64, ) -> usize
Reads the current error log for this driver.
§Parameters
-
callbackcalled for every distinct error observation -
clientdclient data to be passed to the callback -
since_timestamponly return errors after this timestamp (0 returns all)
§Return
the number of distinct errors seen
Stack-borrowed closure (_fn variant): the FnMut closure lives on the
caller’s stack and is borrowed for this call only — the callback fires
synchronously inside the call, so nothing is heap-allocated, nothing is stored,
and the closure may borrow local state. Prefer this over the retained
Handler-based form on the hot path; only generated for callbacks the C
client does not retain (i.e. not stored for later firing).
§Panics
A panic inside the closure cannot unwind across the extern "C" callback
boundary and aborts the process (since Rust 1.81). Return early instead
of panicking in production fragment handlers.
Sourcepub fn counters_reader(&self) -> AeronCountersReader
pub fn counters_reader(&self) -> AeronCountersReader
Gets a counters reader for this command and control file. This does not need to be closed manually, resources are tied to the instance of aeron_cnc.
§Return
pointer to a counters reader.
Sourcepub fn loss_reporter_read<AeronLossReporterReadEntryFuncHandlerImpl: AeronLossReporterReadEntryFuncCallback>(
&self,
entry_func: Option<&Handler<AeronLossReporterReadEntryFuncHandlerImpl>>,
) -> Result<i32, AeronCError>
pub fn loss_reporter_read<AeronLossReporterReadEntryFuncHandlerImpl: AeronLossReporterReadEntryFuncCallback>( &self, entry_func: Option<&Handler<AeronLossReporterReadEntryFuncHandlerImpl>>, ) -> Result<i32, AeronCError>
Sourcepub fn loss_reporter_read_fn<AeronLossReporterReadEntryFuncHandlerImpl: FnMut(i64, i64, i64, i64, i32, i32, &str, &str)>(
&self,
entry_func: AeronLossReporterReadEntryFuncHandlerImpl,
) -> Result<i32, AeronCError>
pub fn loss_reporter_read_fn<AeronLossReporterReadEntryFuncHandlerImpl: FnMut(i64, i64, i64, i64, i32, i32, &str, &str)>( &self, entry_func: AeronLossReporterReadEntryFuncHandlerImpl, ) -> Result<i32, AeronCError>
Read all of the data loss observations from the report in the same media driver instances as the cnc file.
§Parameters
entry_funccallback for each observation found
§Return
-1 on failure, number of observations on success (could be 0).
Stack-borrowed closure (_fn variant): the FnMut closure lives on the
caller’s stack and is borrowed for this call only — the callback fires
synchronously inside the call, so nothing is heap-allocated, nothing is stored,
and the closure may borrow local state. Prefer this over the retained
Handler-based form on the hot path; only generated for callbacks the C
client does not retain (i.e. not stored for later firing).
§Panics
A panic inside the closure cannot unwind across the extern "C" callback
boundary and aborts the process (since Rust 1.81). Return early instead
of panicking in production fragment handlers.
pub fn resolve_filename( directory: &CStr, filename_buffer: &mut [u8], ) -> Result<i32, AeronCError>
pub fn get_inner(&self) -> *mut aeron_cnc_t
Sourcepub unsafe fn get_inner_mut(&self) -> &mut aeron_cnc_t
pub unsafe fn get_inner_mut(&self) -> &mut aeron_cnc_t
Mutable access to the underlying C struct, minted from &self: nothing
prevents two live &mut at once, so the caller must ensure exclusive
access for the lifetime of the returned reference.
§Safety
No other reference (& or &mut) to the underlying struct may be
alive while the returned &mut is in use.
pub fn get_inner_ref(&self) -> &aeron_cnc_t
Source§impl AeronCnc
Counters and Control (CnC) file — the shared-memory interface between the
media driver and its clients.
impl AeronCnc
Counters and Control (CnC) file — the shared-memory interface between the media driver and its clients.
The CnC file contains:
- Counters: stream positions, recording positions, liveness indicators, and application-defined counters.
- Error log: a ring-buffer of recent driver/client errors.
- Loss reporter: observed packet-loss entries.
- To-driver / to-clients command buffers.
AeronCnc is a read-only view of the CnC file — use it to inspect driver
state, dump counters, or read the error log (the upstream aeron_stat,
error_stat, and loss_stat tools all do this).
§Two access patterns
Scoped read (zero allocation, preferred for one-shot queries):
AeronCnc::read(driver_ctx.get_dir(), |cnc| {
cnc.foreach_counter_fn(|value, id, type_id, key, label| {
println!("{id}: {label} = {value}");
});
})?;Opens the CnC file, runs the closure, closes — the resource wrapper lives on the stack and is freed immediately after.
Owned handle (for repeated polling, e.g. a stats dashboard):
let cnc = AeronCnc::open(driver_ctx.get_dir())?;
loop {
let heartbeat = cnc.to_driver_heartbeat();
// ... poll counters, error log, etc. ...
sleep(Duration::from_secs(1));
}
// closed on dropSourcepub fn read(
aeron_dir: &CStr,
handler: impl FnMut(&mut AeronCnc),
) -> Result<(), AeronCError>
pub fn read( aeron_dir: &CStr, handler: impl FnMut(&mut AeronCnc), ) -> Result<(), AeronCError>
Open the CnC file, run handler, close — zero heap allocation for the
resource wrapper (the C struct is stack-borrowed). Preferred for one-shot
reads (dump counters, print the error log). Accepts &CStr so c""
literals work directly.
Sourcepub fn open(aeron_dir: &CStr) -> Result<AeronCnc, AeronCError>
pub fn open(aeron_dir: &CStr) -> Result<AeronCnc, AeronCError>
Open the CnC file and return an owned handle you can store and poll
repeatedly (e.g. a monitoring loop). Allocates the resource wrapper on
the heap; closed on drop. Accepts &CStr so c"" literals work.
Sourcepub fn get_to_driver_heartbeat_ms(&self) -> Result<i64, AeronCError>
pub fn get_to_driver_heartbeat_ms(&self) -> Result<i64, AeronCError>
Gets the timestamp of the last heartbeat sent to the media driver from any client.
@param aeron_cnc to query @return last heartbeat timestamp in ms.