Skip to main content

InterfaceAnnounceQueue

Struct InterfaceAnnounceQueue 

Source
pub struct InterfaceAnnounceQueue {
    pub entries: Vec<AnnounceQueueEntry>,
    pub announce_allowed_at: f64,
}
Expand description

Per-interface announce queue with bandwidth tracking.

Fields§

§entries: Vec<AnnounceQueueEntry>

Queued announce entries.

§announce_allowed_at: f64

Earliest time another announce is allowed on this interface.

Implementations§

Source§

impl InterfaceAnnounceQueue

Source

pub fn new() -> Self

Source

pub fn insert(&mut self, entry: AnnounceQueueEntry)

Insert an announce into the queue. If an entry for the same destination already exists, update it if the new one has fewer hops or is newer.

Source

pub fn remove_stale(&mut self, now: f64)

Remove stale entries (older than QUEUED_ANNOUNCE_LIFE).

Source

pub fn select_next(&self) -> Option<usize>

Select the next announce to send: minimum hops, then oldest (FIFO). Returns the index of the selected entry, or None if empty.

Source

pub fn is_allowed(&self, now: f64) -> bool

Check if an announce is allowed now based on bandwidth.

Source

pub fn calculate_next_allowed( now: f64, raw_len: usize, bitrate: u64, announce_cap: f64, ) -> f64

Calculate the next allowed time after sending an announce. raw_len: size of the announce in bytes bitrate: interface bitrate in bits/second announce_cap: fraction of bitrate reserved for announces

Trait Implementations§

Source§

impl Clone for InterfaceAnnounceQueue

Source§

fn clone(&self) -> InterfaceAnnounceQueue

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for InterfaceAnnounceQueue

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.