#[cfg_attr(docsrs, doc(cfg(feature = "clients")))]
#[cfg(feature = "clients")]
pub mod client;
#[cfg_attr(docsrs, doc(cfg(any(feature = "clients", feature = "servers"))))]
#[cfg(any(feature = "clients", feature = "servers"))]
pub(crate) mod data_stream;
pub mod errors;
#[cfg_attr(docsrs, doc(cfg(any(feature = "clients", feature = "servers"))))]
#[cfg(any(feature = "clients", feature = "servers"))]
pub mod proto;
#[cfg_attr(docsrs, doc(cfg(feature = "servers")))]
#[cfg(feature = "servers")]
pub mod server;
use std::time::Duration;
#[cfg(any(feature = "clients", feature = "servers"))]
use scc::HashMap as ConcurrentHashMap;
#[cfg(any(feature = "clients", feature = "servers"))]
use std::sync::LazyLock;
pub const DEFAULT_SDIO_CONTROL_PORT: u16 = 7975;
pub const DEFAULT_SDIO_BLOCK_PORT: u16 = 7976;
pub const CONNECT_TIMEOUT: Duration = Duration::from_secs(15);
#[cfg(any(feature = "clients", feature = "servers"))]
static SDIO_DATA_STREAMS: LazyLock<ConcurrentHashMap<u64, data_stream::DataStream>> =
LazyLock::new(|| ConcurrentHashMap::with_capacity(1));