midi-harbor/crates/core/src/lib.rs
2026-09-28 13:59:10 -05:00

49 lines
1.7 KiB
Rust

//! Domain types, connection state machine, routing and configuration.
//!
//! This crate carries no I/O and no platform code, so every rule it encodes can be tested on a
//! machine with no MIDI hardware, no network peer and no Bluetooth radio.
pub mod backoff;
pub mod capability;
pub mod config;
pub mod controls;
pub mod counters;
pub mod devicetime;
pub mod endpoint;
pub mod events;
pub mod failure;
pub mod fingerprint;
pub mod ids;
pub mod loops;
pub mod midi;
pub mod paths;
pub mod router;
pub mod rtchannel;
pub mod rtevent;
pub mod sounding;
pub mod state;
pub mod stream;
pub mod time;
/// Midi Harbor's version, from the `VERSION` file at the root of the repository, which every
/// build step reads. The crates' own versions stay 0.0.0, since they are never published.
pub const VERSION: &str = include_str!("../../../VERSION").trim_ascii();
pub use backoff::{Backoff, BackoffPolicy};
pub use capability::{Capability, CapabilityName, CapabilitySet, UnavailableReason};
pub use config::Configuration;
pub use counters::{CounterSnapshot, TrafficCounters};
pub use endpoint::{Direction, Endpoint, EndpointKind, EndpointName};
pub use events::{EventKind, EventLog, Severity};
pub use failure::FailureReason;
pub use fingerprint::{DeviceFingerprint, MatchConfidence};
pub use ids::{EndpointId, EventId, PeerId, RouteId};
pub use midi::{Channel, MidiMessage};
pub use paths::Paths;
pub use router::{ResolvedRoute, RouteValidity, Router};
pub use rtchannel::{Drained, RtConsumer, RtProducer};
pub use rtevent::{RtEvent, RtPayload};
pub use sounding::Sounding;
pub use state::{ConnectionPhase, ConnectionState, Effect};
pub use stream::{Chunk, Scanner, SysExEnd};
pub use time::{Clock, SystemClock, TestClock};