From 76095661cb636095ded270c8a1441be20daa21bc Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Sun, 1 Sep 2019 18:23:55 -0700 Subject: [PATCH] Stream blocks --- rust-lightclient/src/main.rs | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/rust-lightclient/src/main.rs b/rust-lightclient/src/main.rs index a74996d..6592dc3 100644 --- a/rust-lightclient/src/main.rs +++ b/rust-lightclient/src/main.rs @@ -4,6 +4,7 @@ use hyper::client::connect::{Destination, HttpConnector}; use tower_grpc::Request; use tower_hyper::{client, util}; use tower_util::MakeService; +use futures::stream::Stream; pub mod grpc_client { include!(concat!(env!("OUT_DIR"), "/cash.z.wallet.sdk.rpc.rs")); @@ -29,19 +30,31 @@ pub fn main() { .unwrap(); // Wait until the client is ready... - CompactTxStreamer::new(conn).ready() + CompactTxStreamer::new(conn) + .ready() + .map_err(|e| eprintln!("streaming error {:?}", e)) }) .and_then(|mut client| { - use crate::grpc_client::ChainSpec; + use crate::grpc_client::BlockId; + use crate::grpc_client::BlockRange; - client.get_latest_block(Request::new(ChainSpec {})) - }) - .and_then(|response| { - println!("RESPONSE = {:?}", response); - Ok(()) - }) - .map_err(|e| { - println!("ERR = {:?}", e); + let bs = BlockId{ height: 588300, hash: vec!()}; + let be = BlockId{ height: 588390, hash: vec!()}; + + let br = Request::new(BlockRange{ start: Some(bs), end: Some(be)}); + client + .get_block_range(br) + .map_err(|e| { + eprintln!("RouteChat request failed; err={:?}", e); + }) + .and_then(|response| { + let inbound = response.into_inner(); + inbound.for_each(|b| { + println!("RESPONSE = {:?}", b); + Ok(()) + }) + .map_err(|e| eprintln!("gRPC inbound stream error: {:?}", e)) + }) }); tokio::run(say_hello);