Skip to main content

AeronCnc

Struct AeronCnc 

Source
pub struct AeronCnc { /* private fields */ }

Implementations§

Source§

impl AeronCnc

Source

pub fn new_zeroed_on_heap() -> Self

creates zeroed struct where the underlying c struct is on the heap

Source

pub fn new_zeroed_on_stack() -> Self

creates zeroed struct where the underlying c struct is on the stack (Use with care)

Source

pub fn constants( &self, constants: &AeronCncConstants, ) -> Result<i32, AeronCError>

Fetch the sets of constant values associated with this command and control file.

§Parameters
  • constants user supplied structure to hold return values.
§Return

0 on success, -1 on failure.

Source

pub fn get_constants(&self) -> Result<AeronCncConstants, AeronCError>

Fetch the sets of constant values associated with this command and control file.

Source

pub fn filename(&self) -> &str

Get the current file name of the cnc file.

§Return

name of the cnc file

Source

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.

Source

pub fn error_log_read<AeronErrorLogReaderFuncHandlerImpl: AeronErrorLogReaderFuncCallback>( &self, callback: Option<&Handler<AeronErrorLogReaderFuncHandlerImpl>>, since_timestamp: i64, ) -> usize

Reads the current error log for this driver.

§Parameters
  • callback called for every distinct error observation

  • clientd client data to be passed to the callback

  • since_timestamp only return errors after this timestamp (0 returns all)

§Return

the number of distinct errors seen

Source

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
  • callback called for every distinct error observation

  • clientd client data to be passed to the callback

  • since_timestamp only 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.

Source

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.

Source

pub fn loss_reporter_read<AeronLossReporterReadEntryFuncHandlerImpl: AeronLossReporterReadEntryFuncCallback>( &self, entry_func: Option<&Handler<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_func callback for each observation found
§Return

-1 on failure, number of observations on success (could be 0).

Source

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_func callback 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.

Source

pub fn resolve_filename( directory: &CStr, filename_buffer: &mut [u8], ) -> Result<i32, AeronCError>

Source

pub fn get_inner(&self) -> *mut aeron_cnc_t

Source

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.

Source

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.

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 drop
Source

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.

Source

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.

Source

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.

Trait Implementations§

Source§

impl Clone for AeronCnc

Source§

fn clone(&self) -> AeronCnc

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AeronCnc

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for AeronCnc

Source§

type Target = aeron_cnc_stct

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl From<&AeronCnc> for *mut aeron_cnc_t

Source§

fn from(value: &AeronCnc) -> Self

Converts to this type from the input type.
Source§

impl From<*const aeron_cnc_stct> for AeronCnc

Source§

fn from(value: *const aeron_cnc_t) -> Self

Converts to this type from the input type.
Source§

impl From<*mut aeron_cnc_stct> for AeronCnc

Source§

fn from(value: *mut aeron_cnc_t) -> Self

Converts to this type from the input type.
Source§

impl From<AeronCnc> for *mut aeron_cnc_t

Source§

fn from(value: AeronCnc) -> Self

Converts to this type from the input type.
Source§

impl From<AeronCnc> for aeron_cnc_t

Source§

fn from(value: AeronCnc) -> Self

Converts to this type from the input type.
Source§

impl From<aeron_cnc_stct> for AeronCnc

Source§

fn from(value: aeron_cnc_t) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.