xref: /tonic/examples/src/json-codec/client.rs (revision de2e4ac0)
1*de2e4ac0SBrandon Williams //! A HelloWorld example that uses JSON instead of protobuf as the message serialization format.
2*de2e4ac0SBrandon Williams //!
3*de2e4ac0SBrandon Williams //! Generated code is the output of codegen as defined in the `build_json_codec_service` function
4*de2e4ac0SBrandon Williams //! in the `examples/build.rs` file. As defined there, the generated code assumes that a module
5*de2e4ac0SBrandon Williams //! `crate::common` exists which defines `HelloRequest`, `HelloResponse`, and `JsonCodec`.
6*de2e4ac0SBrandon Williams 
7*de2e4ac0SBrandon Williams pub mod common;
8*de2e4ac0SBrandon Williams use common::HelloRequest;
9*de2e4ac0SBrandon Williams 
10*de2e4ac0SBrandon Williams pub mod hello_world {
11*de2e4ac0SBrandon Williams     include!(concat!(env!("OUT_DIR"), "/json.helloworld.Greeter.rs"));
12*de2e4ac0SBrandon Williams }
13*de2e4ac0SBrandon Williams use hello_world::greeter_client::GreeterClient;
14*de2e4ac0SBrandon Williams 
15*de2e4ac0SBrandon Williams #[tokio::main]
main() -> Result<(), Box<dyn std::error::Error>>16*de2e4ac0SBrandon Williams async fn main() -> Result<(), Box<dyn std::error::Error>> {
17*de2e4ac0SBrandon Williams     let mut client = GreeterClient::connect("http://[::1]:50051").await?;
18*de2e4ac0SBrandon Williams 
19*de2e4ac0SBrandon Williams     let request = tonic::Request::new(HelloRequest {
20*de2e4ac0SBrandon Williams         name: "Tonic".into(),
21*de2e4ac0SBrandon Williams     });
22*de2e4ac0SBrandon Williams 
23*de2e4ac0SBrandon Williams     let response = client.say_hello(request).await?;
24*de2e4ac0SBrandon Williams 
25*de2e4ac0SBrandon Williams     println!("RESPONSE={:?}", response);
26*de2e4ac0SBrandon Williams 
27*de2e4ac0SBrandon Williams     Ok(())
28*de2e4ac0SBrandon Williams }
29