* Initial compression support * Support configuring compression on `Server` * Minor clean up * Test that compression is actually happening * Clean up some todos * channels compressing requests * Move compression to be on the codecs * Test sending compressed request to server that doesn't support it * Clean up a bit * Compress server streams * Compress client streams * Bidirectional streaming compression * Handle receiving unsupported encoding * Clean up * Add note to future self * Support disabling compression for individual responses * Add docs * Add compression examples * Disable compression behind feature flag * Add some docs * Make flate2 optional dependency * Fix docs wording * Format * Reply with which encodings are supported * Convert tests to use mocked io * Fix lints * Use separate counters * Don't make a long stream * Address review feedback
Examples
Set of examples that show off the features provided by tonic.
Helloworld
Client
$ cargo run --bin helloworld-client
Server
$ cargo run --bin helloworld-server
RouteGuide
Client
$ cargo run --bin routeguide-client
Server
$ cargo run --bin routeguide-server
Authentication
Client
$ cargo run --bin authentication-client
Server
$ cargo run --bin authentication-server
Load Balance
Client
$ cargo run --bin load-balance-client
Server
$ cargo run --bin load-balance-server
Dynamic Load Balance
Client
$ cargo run --bin dynamic-load-balance-client
Server
$ cargo run --bin dynamic-load-balance-server
TLS (rustls)
Client
$ cargo run --bin tls-client
Server
$ cargo run --bin tls-server
Health Checking
Server
$ cargo run --bin health-server
Server Reflection
Server
$ cargo run --bin reflection-server
Tower Middleware
Server
$ cargo run --bin tower-server
Autoreloading Server
Server
systemfd --no-pid -s http::[::1]:50051 -- cargo watch -x 'run --bin autoreload-server'
Notes:
If you are using the codegen feature, then the following dependencies are
required:
The autoload example requires the following crates installed globally: