Skip to main content

compio_quic/
lib.rs

1//! QUIC implementation based on [`quinn-proto`].
2//!
3//! [`quinn-proto`]: https://docs.rs/quinn-proto
4
5#![cfg_attr(docsrs, feature(doc_cfg))]
6#![allow(unused_features)]
7#![warn(missing_docs)]
8#![deny(rustdoc::broken_intra_doc_links)]
9#![doc(
10    html_logo_url = "https://github.com/compio-rs/compio-logo/raw/refs/heads/master/generated/colored-bold.svg"
11)]
12#![doc(
13    html_favicon_url = "https://github.com/compio-rs/compio-logo/raw/refs/heads/master/generated/colored-bold.svg"
14)]
15
16pub use quinn_proto::{
17    AckFrequencyConfig, ApplicationClose, Chunk, ClientConfig, ClosedStream, ConfigError,
18    ConnectError, ConnectionClose, ConnectionId, ConnectionIdGenerator, ConnectionStats, Dir,
19    EcnCodepoint, EndpointConfig, FrameStats, FrameType, IdleTimeout, MtuDiscoveryConfig,
20    NoneTokenLog, NoneTokenStore, PathStats, ServerConfig, Side, StdSystemTime, StreamId,
21    TimeSource, TokenLog, TokenMemoryCache, TokenReuseError, TokenStore, Transmit, TransportConfig,
22    TransportErrorCode, UdpStats, ValidationTokenConfig, VarInt, VarIntBoundsExceeded, Written,
23    congestion, crypto,
24};
25#[cfg(feature = "qlog")]
26pub use quinn_proto::{QlogConfig, QlogStream};
27
28#[cfg(rustls)]
29mod builder;
30mod connection;
31mod endpoint;
32mod incoming;
33mod recv_stream;
34mod send_stream;
35mod socket;
36
37#[cfg(rustls)]
38pub use builder::{ClientBuilder, ServerBuilder};
39pub use connection::{Connecting, Connection, ConnectionError, OpenStreamError, SendDatagramError};
40pub use endpoint::{Endpoint, EndpointStats};
41pub use incoming::{Incoming, IncomingFuture};
42pub use recv_stream::{ReadError, ReadExactError, RecvStream, ResetError};
43pub use send_stream::{SendStream, StoppedError, WriteError};
44#[cfg(feature = "sync")]
45pub(crate) use synchrony::sync;
46#[cfg(not(feature = "sync"))]
47pub(crate) use synchrony::unsync as sync;
48
49pub(crate) use crate::{
50    connection::{ConnectionEvent, ConnectionInner},
51    endpoint::EndpointRef,
52    socket::*,
53};
54
55/// HTTP/3 support via [`h3`].
56#[cfg(feature = "h3")]
57pub mod h3 {
58    #[doc(no_inline)]
59    pub use h3::*;
60
61    pub use crate::{
62        connection::h3_impl::{BidiStream, OpenStreams},
63        send_stream::h3_impl::SendStream,
64    };
65}