9个不稳定版本

0.5.2 2021年3月5日
0.5.1 2021年3月5日
0.4.1 2020年4月25日
0.4.0 2020年2月10日
0.1.0 2019年1月3日

#33 in #dht

每月 22 次下载
用于 wireguard-p2p

GPL-3.0 许可证

18KB
355

OpenDHT的Rust API。

#![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));
    });
}

依赖关系

~8MB
~248K SLoC