Struct dht::KNodeTable
[−]
[src]
pub struct KNodeTable<TId, TAddr> { /* fields omitted */ }
Kademlia node table.
Keeps nodes in a number of k-buckets (equal to bit size of ID in a system, usually 160), where N-th k-bucket contains nodes with distance from 2N to 2N+1 from our node.
methods may panic if distance between two ids is greater than the
hash_size
.
Methods
impl<TId, TAddr> KNodeTable<TId, TAddr> where
TId: GenericId,
TAddr: Clone + Debug,
[src]
TId: GenericId,
TAddr: Clone + Debug,
fn new(this_id: TId) -> KNodeTable<TId, TAddr>
Create a new node table.
this_id
-- ID of the current node (used to calculate metrics).
fn new_with_details(
this_id: TId,
bucket_size: usize,
hash_size: usize
) -> KNodeTable<TId, TAddr>
this_id: TId,
bucket_size: usize,
hash_size: usize
) -> KNodeTable<TId, TAddr>
fn buckets(&self) -> &Vec<KBucket<TId, TAddr>>
Trait Implementations
impl<TId, TAddr> GenericNodeTable<TId, TAddr> for KNodeTable<TId, TAddr> where
TId: GenericId,
TAddr: Clone + Debug + Sync + Send,
[src]
TId: GenericId,
TAddr: Clone + Debug + Sync + Send,
fn random_id(&self) -> TId
Generate suitable random ID.
fn update(&mut self, node: &Node<TId, TAddr>) -> bool
Store or update node in the table.
fn find(&self, id: &TId, count: usize) -> Vec<Node<TId, TAddr>>
Find given number of node, closest to given ID.
fn pop_oldest(&mut self) -> Vec<Node<TId, TAddr>>
Pop expired or the oldest nodes from table for inspection.