#[cfg(feature = "h2")]
use futures_lite::future::block_on;
#[cfg(feature = "h2")]
#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
struct ListRequest {
topic: String,
}
#[cfg(feature = "h2")]
#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
struct Event {
id: u64,
message: String,
}
#[cfg(feature = "h2")]
fn main() -> Result<(), Box<dyn std::error::Error>> {
block_on(async move {
let client = ugi::Client::builder().http2_only().build()?;
let call = client
.grpc("https://grpc.example.com/stream.Events/List")
.message(&ListRequest {
topic: "orders".to_owned(),
})?;
let mut stream = call.send_streaming().await?;
while let Some(event) = stream.next_message::<Event>().await? {
println!("event#{} {}", event.id, event.message);
}
println!("{:?}", stream.status()?);
Ok(())
})
}
#[cfg(not(feature = "h2"))]
fn main() {
eprintln!("This example requires the `h2` feature.");
}