oxideav-core 0.1.6

Core types and registries for oxideav — timestamps, packets, frames, codec/container/source/filter registries (pure Rust, no C deps)
Documentation
//! Unified runtime registration context.
//!
//! [`RuntimeContext`] bundles every registry the framework needs into a
//! single value that consumers pass around (codec/container/source/
//! filter). Sibling crates expose a uniform `register(&mut
//! RuntimeContext)` entry point that installs themselves into the
//! relevant sub-registry.

use super::codec::CodecRegistry;
use super::container::ContainerRegistry;
use super::filter::FilterRegistry;
use super::source::SourceRegistry;

/// Aggregate of every registry the framework consumes.
///
/// Every sibling crate that contributes implementations exposes
/// `pub fn register(ctx: &mut RuntimeContext)` to install itself.
/// Construct with [`RuntimeContext::new`] for an empty context, then
/// call each sibling's `register` to fill it in.
#[derive(Default)]
pub struct RuntimeContext {
    pub codecs: CodecRegistry,
    pub containers: ContainerRegistry,
    pub sources: SourceRegistry,
    pub filters: FilterRegistry,
}

impl RuntimeContext {
    /// Empty context — no codecs, no containers, no source schemes, no
    /// filters. Sibling crates fill in the four sub-registries via
    /// their `register(&mut RuntimeContext)` entry points.
    pub fn new() -> Self {
        Self::default()
    }
}