Struct libp2p_kad::kbucket::KBucketsTable [−][src]
pub struct KBucketsTable<TKey, TVal> { /* fields omitted */ }
Expand description
A KBucketsTable
represents a Kademlia routing table.
Implementations
Creates a new, empty Kademlia routing table with entries partitioned into buckets as per the Kademlia protocol.
The given pending_timeout
specifies the duration after creation of
a PendingEntry
after which it becomes eligible for insertion into
a full bucket, replacing the least-recently (dis)connected node.
Returns an Entry
for the given key, representing the state of the entry
in the routing table.
Returns an iterator over all buckets.
The buckets are ordered by proximity to the local_key
, i.e. the first
bucket is the closest bucket (containing at most one key).
Returns the bucket for the distance to the given key.
Returns None
if the given key refers to the local key.
Consumes the next applied pending entry, if any.
When an entry is attempted to be inserted and the respective bucket is full,
it may be recorded as pending insertion after a timeout, see InsertResult::Pending
.
If the oldest currently disconnected entry in the respective bucket does not change
its status until the timeout of pending entry expires, it is evicted and
the pending entry inserted instead. These insertions of pending entries
happens lazily, whenever the KBucketsTable
is accessed, and the corresponding
buckets are updated accordingly. The fact that a pending entry was applied is
recorded in the KBucketsTable
in the form of AppliedPending
results, which must be
consumed by calling this function.
Returns an iterator over the keys closest to target
, ordered by
increasing distance.
Returns an iterator over the nodes closest to the target
key, ordered by
increasing distance.
Counts the number of nodes between the local node and the node
closest to target
.
The number of nodes between the local node and the target are calculated by backtracking from the target towards the local key.
Trait Implementations
Auto Trait Implementations
impl<TKey, TVal> RefUnwindSafe for KBucketsTable<TKey, TVal> where
TKey: RefUnwindSafe,
TVal: RefUnwindSafe,
impl<TKey, TVal> Send for KBucketsTable<TKey, TVal> where
TKey: Send,
TVal: Send,
impl<TKey, TVal> Sync for KBucketsTable<TKey, TVal> where
TKey: Sync,
TVal: Sync,
impl<TKey, TVal> Unpin for KBucketsTable<TKey, TVal> where
TKey: Unpin,
TVal: Unpin,
impl<TKey, TVal> UnwindSafe for KBucketsTable<TKey, TVal> where
TKey: UnwindSafe,
TVal: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more