rlibdht 0.1.0

Rust DHT library
Documentation
use std::io;
use std::net::SocketAddr;
use std::sync::{Arc, Mutex};
use crate::kad::server::Server;
use crate::refresh::refresh_handler::RefreshHandler;
use crate::routing::inter::routing_table::RoutingTable;

pub trait KademliaBase: Send + Sync {

    fn bind(&self, port: u16) -> io::Result<()>;

    fn join(&self, local_port: u16, addr: SocketAddr) -> io::Result<()>;

    fn stop(&self);

    fn get_server(&self) -> &Arc<Mutex<Server>>;

    fn get_routing_table(&self) -> &Arc<Mutex<dyn RoutingTable>>;

    fn get_refresh_handler(&self) -> &Arc<Mutex<RefreshHandler>>;

    fn join_thread(&self);

    fn clone_dyn(&self) -> Box<dyn KademliaBase>;
}

impl Clone for Box<dyn KademliaBase> {

    fn clone(&self) -> Self {
        self.clone_dyn()
    }
}