
/// A `tokio` based async.
#[cfg(feature = "build_async_tokio")]
pub mod async_tokio;

/// A `smol`based async.
#[cfg(feature = "build_async_smol")]
pub mod async_smol;

/// A async interface.
pub mod syslog_async;

/// An async socket interface.
pub mod async_socket;

/// An available APIs and common interfaces.
pub mod syslog_trait;

/// A queue adapter selector.
#[cfg(feature = "build_with_queue")]
pub mod async_queue_adapter;

/// Internal syslog logic.
pub mod syslog_async_internal;

// -- PUBLIC EXPORT --

pub use syslog_async_internal::{AsyncMutex, AsyncMutexGuard};

pub use async_socket::{AsyncTap, AsyncSyslogTap};

#[cfg(feature = "build_async_tokio")]
pub use async_tokio::async_mutex::DefaultAsyncMutex;

#[cfg(feature = "build_async_tokio")]
pub use async_tokio::async_internal::DefaultIOs;

#[cfg(feature = "build_async_smol")]
pub use async_smol::async_mutex::DefaultAsyncMutex;

#[cfg(feature = "build_async_smol")]
pub use async_smol::async_internal::DefaultIOs;
