Skip to main content

sim_lib_stream_asio/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Modeled Windows ASIO stream-host adapter (in-process simulation).
4//!
5//! Modeled tier, no native I/O. This crate is a pure-Rust, in-process MODEL of
6//! an ASIO backend, not a binding to the Steinberg ASIO SDK. The workspace
7//! forbids `unsafe` and the crate carries no `-sys`/FFI dependency, so it
8//! performs no real ASIO driver I/O -- it serves deterministic, fake driver
9//! enumeration. The modeled tier is flagged by the default-on `model` feature;
10//! a native provider would live behind a separate FFI binding outside this repo.
11//!
12//! This crate keeps validation independent of the Steinberg ASIO SDK and local
13//! audio drivers. It models provider-reported ASIO drivers, exposes
14//! stream-host inventory and open plans, and bridges ASIO-style process
15//! callbacks into `ProcessBlock` so the same graph processor code can run
16//! under fake Linux CI, Windows ASIO, and other host adapters.
17//!
18//! Native ASIO providers are intentionally optional. A downstream provider must
19//! target Windows, arrange SDK headers/import libraries outside this
20//! repository, and populate the stable model types from driver enumeration.
21
22mod backend;
23mod bridge;
24mod model;
25mod runtime;
26
27pub use backend::{AsioBackend, asio_backend_symbol, asio_clock_symbol, asio_transport_symbol};
28pub use bridge::AsioBufferSwitchBridge;
29pub use model::{AsioDriver, AsioPort, AsioTiming, asio_sdk_build_requirements};
30pub use runtime::{AsioLib, install_stream_asio_lib};
31
32#[cfg(test)]
33mod tests;