[−][src]Module tonic::transport
This is supported on
feature="transport"
only.Batteries included server and client.
This module provides a set of batteries included, fully featured and
fast set of HTTP/2 server and client's. These components each provide either an
openssl
or rustls
tls backend when the respective feature flags are enabled.
They also provide may configurable knobs that can be used to tune how they work.
Features
- TLS support via either OpenSSL or rustls.
- Load balancing
- Timeouts
- Concurrency Limits
- Rate limiting
- gRPC Interceptors
Examples
Client
let cert = std::fs::read_to_string("ca.pem")?; let mut channel = Channel::from_static("https://example.com") .tls_config(ClientTlsConfig::with_rustls() .ca_certificate(Certificate::from_pem(&cert)) .domain_name("example.com".to_string())) .timeout(Duration::from_secs(5)) .rate_limit(5, Duration::from_secs(1)) .concurrency_limit(256) .channel(); channel.call(Request::new(BoxBody::empty())).await?;
Server
let cert = std::fs::read_to_string("server.pem")?; let key = std::fs::read_to_string("server.key")?; let addr = "[::1]:50051".parse()?; Server::builder() .tls_config(ServerTlsConfig::with_rustls() .identity(Identity::from_pem(&cert, &key))) .concurrency_limit_per_connection(256) .interceptor_fn(|svc, req| { println!("Request: {:?}", req); svc.call(req) }) .clone() .serve(addr, my_svc) .await?;
Re-exports
pub use self::server::ServerTlsConfig; |
Modules
channel | feature="transport" Client implementation and builder. |
server | feature="transport" Server implementation and builder. |
Structs
Body | feature="transport" A stream of |
Certificate | feature="transport" Represents a X509 certificate. |
Channel | feature="transport" A default batteries included |
ClientTlsConfig | feature="transport" Configures TLS settings for endpoints. |
Endpoint | feature="transport" Channel builder. |
Error | feature="transport" Error's that originate from the client or server; |
Identity | feature="transport" Represents a private key and X509 certificate. |
Server | feature="transport" A default batteries included |