Struct Integration

Source
pub struct Integration {
    pub action_delay: BinDist,
    pub reporting_delay: BinDist,
    pub trigger_delay: BinDist,
}
Expand description

Represents a Maybenot integration and its associated delays. This can happen in the case of Maybenot being integrated, e.g., in user space with a protocol running in kernel space.

Fields§

§action_delay: BinDist

The action delay is the time between the integration taking action and the action happening. For example, if a padding packet is to be sent, user space might need to signal to kernel space to craft one. NOTE: we assume that the PaddingSent event is triggered directly as padding is sent from Maybenot, while we assume that the BlockingBegin event is triggered when the blocking actually begins in the protocol and the event is transported with a reporting delay.

§reporting_delay: BinDist

The reporting delay is the time between an event being created by the integrated protocol and the event being reported (trigger_events) to Maybenot. For example, this could be the time it takes to go from kernel space to user space.

§trigger_delay: BinDist

The trigger delay is the time it takes for the integration to perform a scheduled action. For example, suppose an action is scheduled for time T. In that case, the trigger delay is added to T. This is important for capturing async integrations, where a zero timeout on an action to send padding would still take some (tiny) time to execute.

Implementations§

Trait Implementations§

Source§

impl Clone for Integration

Source§

fn clone(&self) -> Integration

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 Integration

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V