xref: /tonic/examples/src/compression/server.rs (revision a585a722)
10583cff8SDavid Pedersen use tonic::{transport::Server, Request, Response, Status};
20583cff8SDavid Pedersen 
30583cff8SDavid Pedersen use hello_world::greeter_server::{Greeter, GreeterServer};
40583cff8SDavid Pedersen use hello_world::{HelloReply, HelloRequest};
5*a585a722SMarcus Griep use tonic::codec::CompressionEncoding;
60583cff8SDavid Pedersen 
70583cff8SDavid Pedersen pub mod hello_world {
80583cff8SDavid Pedersen     tonic::include_proto!("helloworld");
90583cff8SDavid Pedersen }
100583cff8SDavid Pedersen 
110583cff8SDavid Pedersen #[derive(Default)]
120583cff8SDavid Pedersen pub struct MyGreeter {}
130583cff8SDavid Pedersen 
140583cff8SDavid Pedersen #[tonic::async_trait]
150583cff8SDavid Pedersen impl Greeter for MyGreeter {
say_hello( &self, request: Request<HelloRequest>, ) -> Result<Response<HelloReply>, Status>160583cff8SDavid Pedersen     async fn say_hello(
170583cff8SDavid Pedersen         &self,
180583cff8SDavid Pedersen         request: Request<HelloRequest>,
190583cff8SDavid Pedersen     ) -> Result<Response<HelloReply>, Status> {
200583cff8SDavid Pedersen         println!("Got a request from {:?}", request.remote_addr());
210583cff8SDavid Pedersen 
220583cff8SDavid Pedersen         let reply = hello_world::HelloReply {
230583cff8SDavid Pedersen             message: format!("Hello {}!", request.into_inner().name),
240583cff8SDavid Pedersen         };
250583cff8SDavid Pedersen         Ok(Response::new(reply))
260583cff8SDavid Pedersen     }
270583cff8SDavid Pedersen }
280583cff8SDavid Pedersen 
290583cff8SDavid Pedersen #[tokio::main]
main() -> Result<(), Box<dyn std::error::Error>>300583cff8SDavid Pedersen async fn main() -> Result<(), Box<dyn std::error::Error>> {
310583cff8SDavid Pedersen     let addr = "[::1]:50051".parse().unwrap();
320583cff8SDavid Pedersen     let greeter = MyGreeter::default();
330583cff8SDavid Pedersen 
340583cff8SDavid Pedersen     println!("GreeterServer listening on {}", addr);
350583cff8SDavid Pedersen 
36*a585a722SMarcus Griep     let service = GreeterServer::new(greeter)
37*a585a722SMarcus Griep         .send_compressed(CompressionEncoding::Gzip)
38*a585a722SMarcus Griep         .accept_compressed(CompressionEncoding::Gzip);
390583cff8SDavid Pedersen 
400583cff8SDavid Pedersen     Server::builder().add_service(service).serve(addr).await?;
410583cff8SDavid Pedersen 
420583cff8SDavid Pedersen     Ok(())
430583cff8SDavid Pedersen }
44