9 unstable releases
0.5.2 | Mar 5, 2021 |
---|---|
0.5.1 | Mar 5, 2021 |
0.4.1 | Apr 25, 2020 |
0.4.0 | Feb 10, 2020 |
0.1.0 | Jan 3, 2019 |
#33 in #dht
22 downloads per month
Used in wireguard-p2p
18KB
355 lines
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));
});
}
Dependencies
~8MB
~248K SLoC