#[cfg(all(feature = "std", not(target_arch = "wasm32")))]
pub mod faketls;
#[cfg(all(feature = "std", not(target_arch = "wasm32")))]
pub mod kcp;
#[cfg(all(feature = "std", not(target_arch = "wasm32")))]
pub mod tcp;
#[cfg(all(feature = "std", target_arch = "wasm32", target_os = "unknown"))]
pub mod websocket;
#[cfg(all(feature = "std", target_arch = "wasm32", target_os = "unknown"))]
pub use websocket::WebSocketLeg;
#[cfg(all(feature = "wasi-leg", target_os = "wasi"))]
pub mod wasi;
#[cfg(all(feature = "wasi-leg", target_os = "wasi"))]
pub use wasi::WasiLeg;
#[cfg(feature = "embedded")]
pub mod embedded;
#[cfg(feature = "std")]
mod trait_def {
use async_trait::async_trait;
use bytes::Bytes;
use std::io;
use std::net::SocketAddr;
#[async_trait]
pub trait TransportLeg: Send + Sync {
async fn send(&self, data: Bytes) -> io::Result<()>;
async fn recv(&self) -> io::Result<Bytes>;
fn is_available(&self) -> bool;
fn rtt_ms(&self) -> u32;
fn loss_percent(&self) -> u8;
fn remote_addr(&self) -> Option<SocketAddr>;
async fn close(&self) -> io::Result<()>;
}
}
#[cfg(feature = "std")]
pub use trait_def::TransportLeg;