From d78086a5e376fc0d9ee64a1dd8e4113d66dcafd3 Mon Sep 17 00:00:00 2001 From: mo khan Date: Wed, 18 Jun 2025 15:31:26 -0600 Subject: feat: create an grpc server --- src/main.rs | 3 --- src/server.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) delete mode 100644 src/main.rs create mode 100644 src/server.rs (limited to 'src') diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index e7a11a9..0000000 --- a/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} diff --git a/src/server.rs b/src/server.rs new file mode 100644 index 0000000..d6a8bca --- /dev/null +++ b/src/server.rs @@ -0,0 +1,40 @@ +use tonic::{Request, Response, Status, transport::Server}; + +use hello_world::greeter_server::{Greeter, GreeterServer}; +use hello_world::{HelloReply, HelloRequest}; + +pub mod hello_world { + tonic::include_proto!("helloworld"); +} + +#[derive(Debug, Default)] +pub struct MyGreeter {} + +#[tonic::async_trait] +impl Greeter for MyGreeter { + async fn say_hello( + &self, + request: Request, + ) -> Result, Status> { + println!("Got a request: {:?}", request); + + let reply = HelloReply { + message: format!("Hello {}!", request.into_inner().name), + }; + + Ok(Response::new(reply)) + } +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let addr = "[::1]:50051".parse()?; + let greeter = MyGreeter::default(); + + Server::builder() + .add_service(GreeterServer::new(greeter)) + .serve(addr) + .await?; + + Ok(()) +} -- cgit v1.2.3