#![cfg_attr(docsrs, feature(doc_cfg))]
#![allow(unused_features)]
#![warn(missing_docs)]
#![deny(rustdoc::broken_intra_doc_links)]
use std::time::Duration;
#[cfg(feature = "qlog")]
pub use noq_proto::QlogConfig;
pub use noq_proto::{
AckFrequencyConfig, ApplicationClose, Chunk, ClientConfig, ClosePathError, ClosedPath,
ClosedStream, ConfigError, ConnectError, ConnectionClose, ConnectionId, ConnectionIdGenerator,
ConnectionStats, DecryptedInitial, Dir, EcnCodepoint, EndpointConfig, FourTuple, FrameStats,
FrameType, IdleTimeout, MtuDiscoveryConfig, MultipathNotNegotiated, NetworkChangeHint,
NoneTokenLog, NoneTokenStore, PathAbandonReason, PathError, PathEvent, PathId, PathStats,
PathStatus, ServerConfig, SetPathStatusError, Side, StdSystemTime, StreamId, TimeSource,
TokenLog, TokenMemoryCache, TokenReuseError, TokenStore, Transmit, TransportConfig,
TransportErrorCode, UdpStats, ValidationTokenConfig, VarInt, VarIntBoundsExceeded, congestion,
crypto, n0_nat_traversal,
};
#[cfg(rustls)]
mod builder;
mod connection;
#[cfg(feature = "graviola")]
pub(crate) mod crypto_graviola;
mod endpoint;
mod event_stream;
mod incoming;
mod path;
mod recv_stream;
mod send_stream;
mod socket;
mod work_limiter;
#[cfg(rustls)]
pub use builder::{ClientBuilder, ServerBuilder};
pub use connection::{
Closed, Connecting, Connection, ConnectionError, OnClosed, OpenStreamError, SendDatagramError,
WeakConnectionHandle, ZeroRttAccepted,
};
pub use endpoint::{Accept, Endpoint, EndpointStats};
#[cfg(feature = "graviola")]
pub use endpoint::{EndpointConfigGraviolaExt, ServerConfigGraviolaExt};
pub use event_stream::{Lagged, NatTraversalUpdates, ObservedExternalAddr, PathEvents};
pub use incoming::{Incoming, IncomingFuture};
pub use path::{AddressDiscovery, OpenPath, Path, WeakPathHandle};
pub use recv_stream::{ReadError, ReadExactError, RecvStream, ResetError, UnorderedRecvStream};
pub use send_stream::{SendStream, StoppedError, WriteError};
#[cfg(feature = "sync")]
pub(crate) use synchrony::sync;
#[cfg(not(feature = "sync"))]
pub(crate) use synchrony::unsync as sync;
pub(crate) use crate::{
connection::{ConnectionEvent, ConnectionInner},
endpoint::EndpointRef,
socket::*,
};
const IO_LOOP_BOUND: usize = 160;
const RECV_TIME_BOUND: Duration = Duration::from_micros(50);
#[cfg(feature = "h3")]
pub mod h3 {
#[doc(no_inline)]
pub use h3::*;
pub use crate::{
connection::h3_impl::{BidiStream, OpenStreams},
send_stream::h3_impl::SendStream,
};
}