MessageChunk

Struct MessageChunk 

Source
pub struct MessageChunk {
    pub data: Vec<u8>,
}
Expand description

A chunk holds a message or a portion of a message, if the message has been split into multiple chunks. The chunk’s data may be signed and encrypted. To extract the message requires all the chunks to be available in sequence so they can be formed back into the message.

Fields§

§data: Vec<u8>

All of the chunk’s data including headers, payload, padding, signature

Implementations§

Source§

impl MessageChunk

Source

pub fn new( sequence_number: u32, request_id: u32, message_type: MessageChunkType, is_final: MessageIsFinalType, secure_channel: &SecureChannel, data: &[u8], ) -> Result<MessageChunk, StatusCode>

Source

pub fn body_size_from_message_size( message_type: MessageChunkType, secure_channel: &SecureChannel, message_size: usize, ) -> Result<usize, ()>

Calculates the body size that fit inside of a message chunk of a particular size. This requires calculating the size of the header, the signature, padding etc. and deducting it to reveal the message size

Source

pub fn message_header( &self, decoding_options: &DecodingOptions, ) -> Result<MessageChunkHeader, StatusCode>

Source

pub fn security_header( &self, decoding_options: &DecodingOptions, ) -> Result<SecurityHeader, StatusCode>

Source

pub fn is_open_secure_channel(&self, decoding_options: &DecodingOptions) -> bool

Source

pub fn chunk_info( &self, secure_channel: &SecureChannel, ) -> Result<ChunkInfo, StatusCode>

Trait Implementations§

Source§

impl BinaryEncoder<MessageChunk> for MessageChunk

Source§

fn byte_len(&self) -> usize

Returns the exact byte length of the structure as it would be if encode were called. This may be called prior to writing to ensure the correct amount of space is available.
Source§

fn encode<S>(&self, stream: &mut S) -> Result<usize, StatusCode>
where S: Write,

Encodes the instance to the write stream.
Source§

fn decode<S>( in_stream: &mut S, decoding_options: &DecodingOptions, ) -> Result<MessageChunk, StatusCode>
where S: Read,

Decodes an instance from the read stream. The decoding options contains restrictions set by the server / client on the length of strings, arrays etc. If these limits are exceeded the implementation should return with a BadDecodingError as soon as possible.
Source§

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

Source§

impl Debug for MessageChunk

Source§

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

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