Skip to main content

Frame

Struct Frame 

Source
pub struct Frame<M = Message> {
    pub version: Version,
    pub stream: StreamId,
    pub data: FrameData<M>,
}
Expand description

Protocol frame.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      'r'      |      'a'      |      'd'      |      0x1      | Version
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                       |T T T I| Stream ID
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                              …| Data (variable size)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Note that the last four bits of the Stream ID encode the Stream Type and Initiator. The first three bits of the last four bits encode the Stream Type, while the last bit encodes the Initiator.

Fields§

§version: Version

The protocol version.

§stream: StreamId

The stream identifier.

§data: FrameData<M>

The frame payload.

Implementations§

Source§

impl<M> Frame<M>

Source

pub fn git(stream: StreamId, data: Vec<u8>) -> Self

Create a ‘git’ protocol frame.

Source

pub fn control(link: Link, ctrl: Control) -> Self

Create a ‘control’ protocol frame.

Source

pub fn gossip(link: Link, msg: M) -> Self

Create a ‘gossip’ protocol frame.

Trait Implementations§

Source§

impl<M: Debug> Debug for Frame<M>

Source§

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

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

impl<M: Decode> Decode for Frame<M>

Source§

fn decode(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl<M: Encode> Encode for Frame<M>

Source§

fn encode(&self, buf: &mut impl BufMut)

Encode self by writing it to the given buffer.
Source§

fn encode_to_vec(&self) -> Vec<u8> ⓘ

A convenience wrapper around Encode::encode that allocates a Vec.
Source§

impl<M: Eq> Eq for Frame<M>

Source§

impl<M: PartialEq> PartialEq for Frame<M>

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl<M: PartialEq> StructuralPartialEq for Frame<M>

Auto Trait Implementations§

§

impl<M> Freeze for Frame<M>
where FrameData<M>: Freeze,

§

impl<M> RefUnwindSafe for Frame<M>

§

impl<M> Send for Frame<M>
where FrameData<M>: Send,

§

impl<M> Sync for Frame<M>
where FrameData<M>: Sync,

§

impl<M> Unpin for Frame<M>
where FrameData<M>: Unpin,

§

impl<M> UnsafeUnpin for Frame<M>

§

impl<M> UnwindSafe for Frame<M>

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<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, 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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