diff --git a/.gitignore b/.gitignore index ea8c4bf..d744ce2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /target + +Cargo.lock diff --git a/src/client.rs b/src/client.rs index 53844fe..2b7dba0 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,13 +1,21 @@ -use tonic::{transport::Server, Request, Response, Status}; - pub mod proto_core { tonic::include_proto!("core"); } -use proto_core::session_server::{Session, SessionServer}; -use proto_core::{SessionRequest, SessionResponse}; +use proto_core::session_client::SessionClient; +use proto_core::SessionRequest; -pub fn main() { +#[tokio::main] +async fn main() -> Result<(), Box> { + let mut client = SessionClient::connect("http://[::1]:50051").await?; + let request = tonic::Request::new(SessionRequest { + session_id: 0, + }); + let response = client.create(request).await?; + + println!("RESPONSE={:?}", response); + + Ok(()) } diff --git a/src/server.rs b/src/server.rs index 53844fe..b72fbe2 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,13 +1,40 @@ use tonic::{transport::Server, Request, Response, Status}; +use proto_core::session_server::{Session, SessionServer}; +use proto_core::{SessionRequest, SessionResponse}; + pub mod proto_core { tonic::include_proto!("core"); } -use proto_core::session_server::{Session, SessionServer}; -use proto_core::{SessionRequest, SessionResponse}; +#[derive(Debug, Default)] +pub struct TestSession {} -pub fn main() { +#[tonic::async_trait] +impl Session for TestSession { + async fn create( + &self, + request: Request, + ) -> Result, Status> { + println!("Got a request: {:?}", request); + let reply = proto_core::SessionResponse { + session_id: request.into_inner().session_id, + }; + Ok(Response::new(reply)) + } +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let addr = "[::1]:50051".parse()?; + let greeter = TestSession::default(); + + Server::builder() + .add_service(SessionServer::new(greeter)) + .serve(addr) + .await?; + + Ok(()) }