Skip to main content

sim_lib_stream_host/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Host-device stream backend substrate.
4//!
5//! The crate currently implements the selected RTP-MIDI subset without opening
6//! sockets or platform devices during normal validation. Host callbacks only
7//! receive a cloneable bounded queue handle and may enqueue packets through
8//! non-blocking calls. Device smoke tests are ignored by default; run them
9//! manually only when a matching external peer or platform device is available.
10
11mod audio_provider;
12mod backend;
13mod capability;
14mod cassette;
15mod catalog;
16mod config;
17mod config_probe;
18pub mod cookbook;
19mod eval_site;
20mod fake;
21mod inventory;
22mod midi_live_eval_site;
23mod midi_provider;
24mod model;
25mod placement;
26mod provider;
27mod queue;
28mod registry;
29mod ring;
30mod router;
31#[cfg(feature = "rtp-midi")]
32mod rtp_midi;
33mod site;
34
35pub use audio_provider::ModeledAudioProvider;
36pub use backend::{HostBackend, HostOpenStream, HostStreamDriver};
37pub use capability::{HostBackendCapability, missing_capability_card_expr};
38pub use cassette::{HostCallbackCassette, HostCallbackReplayReport};
39pub use catalog::{DeviceCatalog, audio_device_export_symbol, audio_site_export_symbol};
40pub use config::{
41    HostClockInfo, HostLatencyInfo, HostReconnectPolicy, HostStreamConfig, HostStreamConfigRequest,
42};
43pub use config_probe::{
44    HostStreamConfigProbe, hardware_inventory_probe_capability_symbol,
45    host_stream_config_probe_symbol, stream_host_config_lib_symbol,
46};
47pub use cookbook::fake_backend_demo;
48pub use eval_site::{DeviceProvider, StreamEvalSite};
49pub use fake::{FakeBackend, fake_backend_symbol};
50pub use inventory::{HostDeviceInventory, HostPortSpec};
51pub use midi_live_eval_site::MidiLiveEvalSite;
52pub use midi_provider::ModeledMidiProvider;
53pub use model::{
54    HostBackendInfo, HostDeviceSpec, HostDirection, HostOpenPlan, stream_host_capability,
55    stream_host_device_read_effect_kind, stream_host_device_write_effect_kind,
56};
57pub use placement::{
58    AudioDeviceCard, AudioPlacementRequest, AudioSiteKey, DeviceDirection, DeviceKind,
59    DeviceRecord, LanPlacementMode, LanPlacementReport, LanPlacementRequest, Placement,
60    lan_bar_delay_mode_symbol, lan_experimental_remote_sample_capability,
61    lan_jitter_buffered_mode_symbol, lan_peer_site_symbol,
62    lan_pinned_sample_experimental_diagnostic, lan_pinned_sample_refusal_diagnostic,
63};
64pub use provider::{
65    AUDIO_PROVIDER_ABI_VERSION, AUDIO_PROVIDER_ENTRY_V1, AudioProviderEntry, AudioProviderHost,
66    AudioProviderProofEntries, AudioProviderRegistrar, RouterAudioProviderRegistrar,
67    native_audio_provider_capability,
68};
69pub use queue::HostCallbackQueue;
70pub use registry::HostBackendRegistry;
71pub use ring::{ProcessRingPush, ProcessRingSnapshot, ProcessSharedRing};
72pub use router::{AudioRouter, RegisteredAudioSite};
73#[cfg(feature = "rtp-midi")]
74pub use rtp_midi::{RtpMidiBackend, RtpMidiPort, rtp_midi_backend_symbol};
75pub use site::{AudioSite, ModeledAudioSite};
76
77#[cfg(test)]
78mod catalog_tests;
79#[cfg(test)]
80mod config_probe_tests;
81#[cfg(test)]
82mod placement_tests;
83#[cfg(test)]
84mod provider_tests;
85#[cfg(test)]
86mod ring_tests;
87#[cfg(test)]
88mod tests;