diff options
Diffstat (limited to 'ipfs-api/examples/get_swarm.rs')
-rw-r--r-- | ipfs-api/examples/get_swarm.rs | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/ipfs-api/examples/get_swarm.rs b/ipfs-api/examples/get_swarm.rs index 52e547a..2b9fd73 100644 --- a/ipfs-api/examples/get_swarm.rs +++ b/ipfs-api/examples/get_swarm.rs @@ -6,11 +6,12 @@ // copied, modified, or distributed except according to those terms. // +extern crate futures; +extern crate hyper; extern crate ipfs_api; -extern crate tokio_core; +use futures::Future; use ipfs_api::IpfsClient; -use tokio_core::reactor::Core; // Creates an Ipfs client, and gets information about your local address, and // connected peers. @@ -18,30 +19,33 @@ use tokio_core::reactor::Core; fn main() { println!("connecting to localhost:5001..."); - let mut core = Core::new().expect("expected event loop"); - let client = IpfsClient::default(&core.handle()); + let client = IpfsClient::default(); - let local = client.swarm_addrs_local(); - let local = core.run(local).expect("expected a valid response"); - - println!(); - println!("your addrs:"); - for addr in local.strings { - println!(" {}", addr); - } - - let connected = client.swarm_peers(); - let connected = core.run(connected).expect("expected a valid response"); + let local = client.swarm_addrs_local().map(|local| { + println!(); + println!("your addrs:"); + for addr in local.strings { + println!(" {}", addr); + } + }); - println!(); - println!("connected:"); - for peer in connected.peers { - let streams: Vec<&str> = peer.streams.iter().map(|s| &s.protocol[..]).collect(); - println!(" addr: {}", peer.addr); - println!(" peer: {}", peer.peer); - println!(" latency: {}", peer.latency); - println!(" muxer: {}", peer.muxer); - println!(" streams: {}", streams.join(", ")); + let connected = client.swarm_peers().map(|connected| { println!(); - } + println!("connected:"); + for peer in connected.peers { + let streams: Vec<&str> = peer.streams.iter().map(|s| &s.protocol[..]).collect(); + println!(" addr: {}", peer.addr); + println!(" peer: {}", peer.peer); + println!(" latency: {}", peer.latency); + println!(" muxer: {}", peer.muxer); + println!(" streams: {}", streams.join(", ")); + println!(); + } + }); + + hyper::rt::run( + local + .and_then(|_| connected) + .map_err(|e| eprintln!("{}", e)), + ); } |