Skip to main content

FipsEndpointDirectPacketRun

Struct FipsEndpointDirectPacketRun 

Source
pub struct FipsEndpointDirectPacketRun { /* private fields */ }
Expand description

Consecutive direct endpoint packets from one authenticated FIPS source.

This can chain opened EndpointData buffers and expose packet slices by range. That is the canonical direct dataplane endpoint payload contract for high-throughput embedders: FIPS owns authentication and ordering, while the embedder can still apply live routing policy before borrowing packet bytes for TUN writes.

Implementations§

Source§

impl FipsEndpointDirectPacketRun

Source

pub fn source_peer(&self) -> &PeerIdentity

Authenticated FIPS peer that originated every packet in this run.

Source

pub fn enqueued_at_ms(&self) -> u64

Unix-millisecond time when FIPS handed this run to the direct sink.

Source

pub fn len(&self) -> usize

Number of endpoint packets in the run.

Source

pub fn is_empty(&self) -> bool

Whether the run contains no packets.

Source

pub fn packet_bytes(&self) -> usize

Sum of endpoint packet bytes, excluding bulk length metadata.

Source

pub fn packet_slice(&self, index: usize) -> Option<&[u8]>

Borrow one packet by index.

Source

pub fn packet_slices(&self) -> FipsEndpointDirectPacketSlices<'_>

Borrow packet bytes without materializing per-packet buffers.

Source

pub fn retain_packets<F>(&mut self, keep: F)
where F: FnMut(usize, &[u8]) -> bool,

Keep only packets accepted by the caller while preserving backing storage.

The predicate receives the original packet index and immutable bytes. This keeps routing/admission policy outside FIPS while allowing embedders to remove rejected ranges before a TUN writer borrows or mutates the run.

Source

pub fn split_off_packets( &mut self, at: usize, ) -> Option<FipsEndpointDirectPacketRun>

Split this run at a packet index without copying packet bytes.

The original run keeps packets before at; the returned run contains packets from at onward with the same authenticated source metadata.

Trait Implementations§

Source§

impl Clone for FipsEndpointDirectPacketRun

Source§

fn clone(&self) -> FipsEndpointDirectPacketRun

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for FipsEndpointDirectPacketRun

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Eq for FipsEndpointDirectPacketRun

Source§

impl PartialEq for FipsEndpointDirectPacketRun

Source§

fn eq(&self, other: &FipsEndpointDirectPacketRun) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for FipsEndpointDirectPacketRun

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
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

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more