Skip to main content

grpc_quic_server/
lib.rs

1//! # grpc-quic-server
2//!
3//! gRPC server over QUIC transport.
4//!
5//! Provides [`QuicServer`] which accepts QUIC connections, reads raw gRPC bytes
6//! from each bi-directional stream, and delegates requests to a tonic [`Router`].
7//!
8//! ## Usage (Phase 3)
9//!
10//! ```rust,no_run
11//! use grpc_quic_server::QuicServer;
12//! use tower::service_fn;
13//! use http::{Request, Response};
14//!
15//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
16//! # let service = service_fn(|_req: Request<tonic::body::BoxBody>| async {
17//! #     Ok::<_, tonic::Status>(Response::new(tonic::body::empty_body()))
18//! # });
19//! QuicServer::builder()
20//!     .build()
21//!     .serve("127.0.0.1:50051".parse()?, service)
22//!     .await?;
23//! # Ok(())
24//! # }
25//! ```
26//!
27//! [`Router`]: tonic::transport::server::Router
28
29#![forbid(unsafe_code)]
30#![warn(rust_2018_idioms)]
31
32pub mod acceptor;
33pub mod error;
34pub mod server;
35
36#[cfg(test)]
37mod tests;
38
39pub use error::ServerError;
40pub use server::{QuicServer, QuicServerBuilder};