Skip to main content

nxtquic_api/
lib.rs

1//! # NxtQuic Async API
2//!
3//! High-level async/await API for the NxtQuic QUIC transport library.
4//! Provides ergonomic `Endpoint`, `Connection`, `SendStream`, and `RecvStream`
5//! types built on top of the I/O-free `nxtquic-proto` core.
6//!
7//! This crate will be fully implemented in Phase 4 of the NxtQuic project.
8
9#![forbid(unsafe_code)]
10#![warn(missing_docs)]
11
12pub mod connection;
13pub mod endpoint;
14pub mod runtime;
15pub mod stream;
16
17pub use connection::Connection;
18pub use endpoint::{ClientConfig, Endpoint, EndpointConfig, ServerConfig, Connecting, Incoming};
19pub use stream::{RecvStream, SendStream};
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24    use std::net::SocketAddr;
25
26    #[tokio::test]
27    async fn test_loopback_connection_establishment() {
28        let server_addr: SocketAddr = "127.0.0.1:0".parse().unwrap();
29        let _server_endpoint = Endpoint::bind(server_addr).await.unwrap();
30
31        let client_endpoint = Endpoint::bind("127.0.0.1:0".parse().unwrap()).await.unwrap();
32        let connecting = client_endpoint.connect(server_addr, "localhost").await.unwrap();
33        
34        let _client_conn = connecting.await_connection().await.unwrap();
35    }
36}