From de2d6ea8f54fbc0c116693aac858893d14abc69c Mon Sep 17 00:00:00 2001 From: ghe0 Date: Sun, 2 Feb 2025 02:47:57 +0200 Subject: [PATCH] also added client --- src/client.rs | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/client.rs b/src/client.rs index 68479ab..d52f572 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,5 +1,38 @@ mod grpc; +use tokio_stream::{self as stream}; +use tonic::Request; -fn main (){ - println!("Hello! I am a client!"); +use grpc::dummy::{test_service_client::TestServiceClient, Empty, SomeRequest, StreamRequest}; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let mut client = TestServiceClient::connect("http://[::1]:50051").await?; + + let request = + Request::new(SomeRequest { what_client_sends: String::from("Hello from client!") }); + + let response = client.get_something(request).await?; + println!("Unary response: {:?}", response.get_ref().what_server_sends); + + let messages = vec![ + StreamRequest { what_client_sends: "Client stream #1".to_string() }, + StreamRequest { what_client_sends: "Client stream #2".to_string() }, + StreamRequest { what_client_sends: "Client stream #3".to_string() }, + ]; + + let outbound = stream::iter(messages); + + let response = client.client_messages(Request::new(outbound)).await?; + println!("Client streaming response: {:?}", response.get_ref()); + + let mut stream = client.server_messages(Request::new(Empty {})).await?.into_inner(); + + println!("Server streaming messages:"); + while let Some(item) = stream.message().await? { + println!(" -> {}", item.what_server_sends); + } + + println!("Server stream ended."); + + Ok(()) }