From 9d44b02e1a695c85e903287314a4446984f71b54 Mon Sep 17 00:00:00 2001 From: Lucio Franco Date: Fri, 6 Sep 2019 15:56:26 -0400 Subject: [PATCH] Clean up interop server and fmt --- tonic-interop/src/bin/server.rs | 87 ++--------------------------- tonic-interop/src/lib.rs | 1 + tonic-interop/src/server.rs | 97 +++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 83 deletions(-) create mode 100644 tonic-interop/src/server.rs diff --git a/tonic-interop/src/bin/server.rs b/tonic-interop/src/bin/server.rs index 66327ee..adf7d82 100644 --- a/tonic-interop/src/bin/server.rs +++ b/tonic-interop/src/bin/server.rs @@ -1,85 +1,6 @@ use structopt::StructOpt; -use tonic::{Code, Request, Response, Status, Server}; -use std::pin::Pin; -use tonic_interop::pb::*; - -#[derive(Default, Clone)] -pub struct TestService { - data: String, -} - -type Result = std::result::Result, Status>; -type Streaming = Request>; -type Stream = Pin> + Send + 'static>>; - -#[tonic::async_trait] -impl tonic_interop::pb::TestService for TestService { - async fn empty_call(&self, _request: Request) -> Result { - println!("empty_call"); - Ok(Response::new(Empty {})) - } - - async fn unary_call( - &self, - request: Request, - ) -> Result { - println!("unary_call"); - - let req = request.into_inner(); - - if let Some(echo_status) = req.response_status { - let status = Status::new(Code::from_i32(echo_status.code), echo_status.message); - return Err(status); - } - - let res_size = if req.response_size >= 0 { - req.response_size as usize - } else { - let status = Status::new(Code::InvalidArgument, "response_size cannot be negative"); - return Err(status); - }; - - let res = SimpleResponse { - payload: Some(Payload { - body: vec![0; res_size], - ..Default::default() - }), - ..Default::default() - }; - - Ok(Response::new(res)) - } - - async fn cacheable_unary_call(&self, _: Request) -> Result { - unimplemented!() - } - - type StreamingOutputCallStream = Stream; - - async fn streaming_output_call(&self, _: Request) -> Result { - unimplemented!() - } - - async fn streaming_input_call(&self, _: Streaming) -> Result { - unimplemented!() - } - - type FullDuplexCallStream = Stream; - - async fn full_duplex_call(&self, _: Streaming) -> Result { - unimplemented!() - } - - type HalfDuplexCallStream = Stream; - - async fn half_duplex_call(&self, _: Streaming) -> Result { - unimplemented!() - } - - async fn unimplemented_call(&self, _: Request) -> Result { - unimplemented!() - } -} +use tonic::Server; +use tonic_interop::server; #[derive(StructOpt)] struct Opts { @@ -94,7 +15,7 @@ async fn main() -> std::result::Result<(), Box> { pretty_env_logger::init(); let addr = "127.0.0.1:10000".parse().unwrap(); - let greeter = TestService::default(); + let test_service = server::create(); let mut builder = Server::builder(); @@ -104,7 +25,7 @@ async fn main() -> std::result::Result<(), Box> { builder.tls(ca, key); } - builder.serve(addr, TestServiceServer::new(greeter)).await?; + builder.serve(addr, test_service).await?; Ok(()) } diff --git a/tonic-interop/src/lib.rs b/tonic-interop/src/lib.rs index 0a4008f..b4e6e1a 100644 --- a/tonic-interop/src/lib.rs +++ b/tonic-interop/src/lib.rs @@ -1,4 +1,5 @@ pub mod client; +pub mod server; pub mod pb { #![allow(dead_code)] diff --git a/tonic-interop/src/server.rs b/tonic-interop/src/server.rs new file mode 100644 index 0000000..9bf81fa --- /dev/null +++ b/tonic-interop/src/server.rs @@ -0,0 +1,97 @@ +use crate::pb::*; +use std::pin::Pin; +use tonic::{Code, Request, Response, Status}; + +pub fn create() -> TestServiceServer { + TestServiceServer::new(TestService { + data: String::new(), + }) +} + +#[derive(Default, Clone)] +pub struct TestService { + data: String, +} + +type Result = std::result::Result, Status>; +type Streaming = Request>; +type Stream = + Pin> + Send + 'static>>; + +#[tonic::async_trait] +impl crate::pb::TestService for TestService { + async fn empty_call(&self, _request: Request) -> Result { + println!("empty_call"); + Ok(Response::new(Empty {})) + } + + async fn unary_call(&self, request: Request) -> Result { + println!("unary_call"); + + let req = request.into_inner(); + + if let Some(echo_status) = req.response_status { + let status = Status::new(Code::from_i32(echo_status.code), echo_status.message); + return Err(status); + } + + let res_size = if req.response_size >= 0 { + req.response_size as usize + } else { + let status = Status::new(Code::InvalidArgument, "response_size cannot be negative"); + return Err(status); + }; + + let res = SimpleResponse { + payload: Some(Payload { + body: vec![0; res_size], + ..Default::default() + }), + ..Default::default() + }; + + Ok(Response::new(res)) + } + + async fn cacheable_unary_call(&self, _: Request) -> Result { + unimplemented!() + } + + type StreamingOutputCallStream = Stream; + + async fn streaming_output_call( + &self, + _: Request, + ) -> Result { + unimplemented!() + } + + async fn streaming_input_call( + &self, + _: Streaming, + ) -> Result { + unimplemented!() + } + + type FullDuplexCallStream = Stream; + + async fn full_duplex_call( + &self, + _: Streaming, + ) -> Result { + unimplemented!() + } + + type HalfDuplexCallStream = Stream; + + async fn half_duplex_call( + &self, + _: Streaming, + ) -> Result { + unimplemented!() + } + + async fn unimplemented_call(&self, _: Request) -> Result { + unimplemented!() + } +}