Skip to main content

BlockFrame

Struct BlockFrame 

Source
pub struct BlockFrame {
    pub block_type: u8,
    pub flags: BlockFlags,
    pub body: Vec<u8>,
}
Expand description

Block frame — the wire envelope wrapping every block’s body.

┌──────────────────────────────────────────────────┐
│ block_type   (varint, 1-2 bytes typically)       │
│ block_flags  (uint8, 1 byte)                     │
│ content_len  (varint, 1-5 bytes typically)       │
│ body         [content_len bytes]                  │
└──────────────────────────────────────────────────┘

Fields§

§block_type: u8

The semantic block type (CODE=0x01, CONVERSATION=0x02, etc.).

§flags: BlockFlags

Per-block flags.

§body: Vec<u8>

The raw body bytes (content_len bytes from the wire).

Implementations§

Source§

impl BlockFrame

Source

pub fn write_to(&self, w: &mut impl Write) -> Result<usize, WireError>

Write this block frame to the provided writer.

Wire layout written:

  1. block_type as varint
  2. block_flags as single u8
  3. body.len() as varint (content_len)
  4. body bytes
§Returns

Total number of bytes written.

Source

pub fn read_from(buf: &[u8]) -> Result<Option<(Self, usize)>, WireError>

Read a block frame from the provided byte slice.

§Returns

Some((frame, bytes_consumed)) for normal blocks, or None if the block type is END (0xFF), signaling the end of the block stream.

§Errors

Trait Implementations§

Source§

impl Clone for BlockFrame

Source§

fn clone(&self) -> BlockFrame

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 BlockFrame

Source§

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

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

impl PartialEq for BlockFrame

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Eq for BlockFrame

Source§

impl StructuralPartialEq for BlockFrame

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