summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-06-18 15:31:26 -0600
committermo khan <mo@mokhan.ca>2025-06-18 15:31:26 -0600
commitd78086a5e376fc0d9ee64a1dd8e4113d66dcafd3 (patch)
tree40d749119aee2106e56173ceeddd63fffc6c574b /src
parentb7d47b2a6c00925f6ae9640700fcda0d888b0486 (diff)
feat: create an grpc server
Diffstat (limited to 'src')
-rw-r--r--src/main.rs3
-rw-r--r--src/server.rs40
2 files changed, 40 insertions, 3 deletions
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<HelloRequest>,
+ ) -> Result<Response<HelloReply>, 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<dyn std::error::Error>> {
+ let addr = "[::1]:50051".parse()?;
+ let greeter = MyGreeter::default();
+
+ Server::builder()
+ .add_service(GreeterServer::new(greeter))
+ .serve(addr)
+ .await?;
+
+ Ok(())
+}