Crates.io | opendht |
lib.rs | opendht |
version | 0.5.2 |
source | src |
created_at | 2019-01-03 16:08:45.264793 |
updated_at | 2021-03-05 17:04:37.881264 |
description | A Rust API for OpenDHT |
homepage | |
repository | https://github.com/manuels/opendht |
max_upload_size | |
id | 105248 |
size | 35,048 |
A Rust API for OpenDHT.
#![feature(await_macro, async_await, futures_api)]
extern crate opendht;
extern crate futures;
#[macro_use] extern crate tokio;
use std::net::ToSocketAddrs;
use tokio::prelude::*;
use opendht::OpenDht;
async fn run(dht: OpenDht) {
println!("Bootstrapping...");
let addrs: Vec<_> = "bootstrap.ring.cx:4222".to_socket_addrs().unwrap().collect();
let f = dht.bootstrap(&addrs);
await!(f).unwrap();
let key = &b"foo"[..];
println!("Storing...");
let f = dht.put(key, &[9,9,9]);
await!(f).unwrap();
let mut f = dht.get(key); // dht.listen(key) is also available
while let Some(item) = await!(f.next()) {
println!("Found {:?}", item);
}
dht.join();
println!("Done: All threads joined.");
}
fn main() {
tokio::run_async(async {
let dht = OpenDht::new(4222).unwrap();
let dht2 = dht.clone();
tokio::spawn_async(async move {
while let Some(next) = dht2.tick() {
let f = tokio::timer::Delay::new(next);
let _ = await!(f);
}
});
await!(run(dht));
});
}