xref: /tonic/examples/src/multiplex/client.rs (revision df8dd896)
1d9a481baSLucio Franco pub mod hello_world {
2d9a481baSLucio Franco     tonic::include_proto!("helloworld");
3d9a481baSLucio Franco }
4d9a481baSLucio Franco 
5d9a481baSLucio Franco pub mod echo {
6*df8dd896Stottoto     tonic::include_proto!("grpc.examples.unaryecho");
7d9a481baSLucio Franco }
8d9a481baSLucio Franco 
9d9a481baSLucio Franco use echo::{echo_client::EchoClient, EchoRequest};
10d9a481baSLucio Franco use hello_world::{greeter_client::GreeterClient, HelloRequest};
11d9a481baSLucio Franco use tonic::transport::Endpoint;
12d9a481baSLucio Franco 
13d9a481baSLucio Franco #[tokio::main]
main() -> Result<(), Box<dyn std::error::Error>>14d9a481baSLucio Franco async fn main() -> Result<(), Box<dyn std::error::Error>> {
15d9a481baSLucio Franco     let channel = Endpoint::from_static("http://[::1]:50051")
16d9a481baSLucio Franco         .connect()
17d9a481baSLucio Franco         .await?;
18d9a481baSLucio Franco 
19d9a481baSLucio Franco     let mut greeter_client = GreeterClient::new(channel.clone());
20d9a481baSLucio Franco     let mut echo_client = EchoClient::new(channel);
21d9a481baSLucio Franco 
22d9a481baSLucio Franco     let request = tonic::Request::new(HelloRequest {
23d9a481baSLucio Franco         name: "Tonic".into(),
24d9a481baSLucio Franco     });
25d9a481baSLucio Franco 
26d9a481baSLucio Franco     let response = greeter_client.say_hello(request).await?;
27d9a481baSLucio Franco 
28d9a481baSLucio Franco     println!("GREETER RESPONSE={:?}", response);
29d9a481baSLucio Franco 
30d9a481baSLucio Franco     let request = tonic::Request::new(EchoRequest {
31d9a481baSLucio Franco         message: "hello".into(),
32d9a481baSLucio Franco     });
33d9a481baSLucio Franco 
34d9a481baSLucio Franco     let response = echo_client.unary_echo(request).await?;
35d9a481baSLucio Franco 
36d9a481baSLucio Franco     println!("ECHO RESPONSE={:?}", response);
37d9a481baSLucio Franco 
38d9a481baSLucio Franco     Ok(())
39d9a481baSLucio Franco }
40