pub struct AdaptiveLookupScheduler { /* private fields */ }Expand description
Maintains a rolling latency window and adaptively tunes Kademlia alpha.
§Thread Safety
The scheduler is designed for concurrent use. alpha uses an AtomicU32
for lock-free reads while window is protected by a Mutex.
Implementations§
Source§impl AdaptiveLookupScheduler
impl AdaptiveLookupScheduler
Sourcepub fn record_latency(&self, d: Duration)
pub fn record_latency(&self, d: Duration)
Record a single lookup latency sample.
The sample is appended to the sliding window; the oldest sample is evicted
when the window is full. After updating the window, Self::adjust is
called to possibly update alpha.
Sourcepub fn current_alpha(&self) -> u32
pub fn current_alpha(&self) -> u32
Return the current alpha value.
Sourcepub fn stats(&self) -> LookupSchedulerStats
pub fn stats(&self) -> LookupSchedulerStats
Return a statistics snapshot.
Trait Implementations§
Source§impl Debug for AdaptiveLookupScheduler
impl Debug for AdaptiveLookupScheduler
Auto Trait Implementations§
impl !Freeze for AdaptiveLookupScheduler
impl RefUnwindSafe for AdaptiveLookupScheduler
impl Send for AdaptiveLookupScheduler
impl Sync for AdaptiveLookupScheduler
impl Unpin for AdaptiveLookupScheduler
impl UnsafeUnpin for AdaptiveLookupScheduler
impl UnwindSafe for AdaptiveLookupScheduler
Blanket Implementations§
impl<T> Allocation for T
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more