Skip to main content

moq_native/
lib.rs

1//! Helper library for native MoQ applications.
2//!
3//! Establishes MoQ connections over:
4//! - WebTransport (HTTP/3)
5//! - Raw QUIC (with ALPN negotiation)
6//! - WebSocket (fallback via [web-transport-ws](https://crates.io/crates/web-transport-ws))
7//! - Iroh P2P (requires `iroh` feature)
8//!
9//! See [`Client`] for connecting to relays and [`Server`] for accepting connections.
10
11/// Default maximum number of concurrent QUIC streams (bidi and uni) per connection.
12pub(crate) const DEFAULT_MAX_STREAMS: u64 = 1024;
13
14mod client;
15mod crypto;
16mod log;
17#[cfg(feature = "quinn")]
18mod quinn;
19mod server;
20#[cfg(feature = "websocket")]
21mod websocket;
22
23pub use client::*;
24pub use log::*;
25pub use server::*;
26#[cfg(feature = "websocket")]
27pub use websocket::*;
28
29// Re-export these crates.
30pub use moq_lite;
31pub use rustls;
32
33#[cfg(feature = "quinn")]
34pub use web_transport_quinn;
35
36#[cfg(feature = "quiche")]
37mod quiche;
38#[cfg(feature = "quiche")]
39pub use web_transport_quiche;
40
41#[cfg(feature = "iroh")]
42mod iroh;
43#[cfg(feature = "iroh")]
44pub use iroh::*;
45
46/// The QUIC backend to use for connections.
47#[derive(Clone, Debug, clap::ValueEnum, serde::Serialize, serde::Deserialize)]
48#[serde(rename_all = "lowercase")]
49pub enum QuicBackend {
50	/// [web-transport-quinn](https://crates.io/crates/web-transport-quinn)
51	#[cfg(feature = "quinn")]
52	Quinn,
53
54	/// [web-transport-quiche](https://crates.io/crates/web-transport-quiche)
55	#[cfg(feature = "quiche")]
56	Quiche,
57}