blob: 3e27f4aef6bb5552135dc214c2706b5e370e70de [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// [START deps]
use anyhow::{Context as _, Error};
use fidl_fuchsia_examples::{EchoMarker, EchoSynchronousProxy};
use fuchsia_component::client::connect_channel_to_service;
use fuchsia_zircon::{self as zx, prelude::*};
// [END deps]
// [START main]
fn main() -> Result<(), Error> {
// Initialize a channel, and label the two ends as the server_end and client_end
let (server_end, client_end) = zx::Channel::create()?;
// Connect an implementation of the Echo protocol to the server end
connect_channel_to_service::<EchoMarker>(server_end)
.context("Failed to connect to echo service")?;
// Create a synchronous proxy using the client end
let mut echo = EchoSynchronousProxy::new(client_end);
// Make an EchoString request, with a timeout of 1 second for receiving the response
let res = echo.echo_string("hello", zx::Time::after(1.second()))?;
println!("response: {:?}", res);
// Make a SendString request
echo.send_string("hi")?;
Ok(())
}
// [END main]