use core::time::Duration;
pub const DEFAULT_IDLE_TIMEOUT: Duration = Duration::from_secs(30);
pub const DEFAULT_INFLIGHT_TIMEOUT: Duration = Duration::from_secs(5);
pub mod application;
pub mod crypto;
pub mod endpoint;
pub mod environment;
pub mod pacer;
pub mod packet_map;
pub mod packet_number;
pub mod processing;
pub mod recv;
pub mod runtime;
pub mod send;
pub mod server;
pub mod shared;
pub mod socket;
bitflags::bitflags! {
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct TransportFeatures: u8 {
const RELIABLE = 1;
const FLOW_CONTROL = 2;
const STREAM = 3;
const CONNECTED = 4;
}
}
impl Default for TransportFeatures {
#[inline]
fn default() -> Self {
TransportFeatures::empty()
}
}
macro_rules! is_feature {
($is_feature:ident, $NAME:ident) => {
#[inline]
pub const fn $is_feature(&self) -> bool {
self.contains(Self::$NAME)
}
};
}
impl TransportFeatures {
pub const TCP: Self = Self::all();
pub const UDP: Self = Self::empty();
is_feature!(is_reliable, RELIABLE);
is_feature!(is_flow_controlled, FLOW_CONTROL);
is_feature!(is_stream, STREAM);
is_feature!(is_connected, CONNECTED);
}