Struct rustls::internal::msgs::deframer::MessageDeframer

source ·
pub struct MessageDeframer {
    last_error: Option<Error>,
    buf: Vec<u8>,
    joining_hs: Option<HandshakePayloadMeta>,
    used: usize,
}
Expand description

This deframer works to reconstruct TLS messages from a stream of arbitrary-sized reads.

It buffers incoming data into a Vec through read(), and returns messages through pop(). QUIC connections will call push() to append handshake payload data directly.

Fields§

§last_error: Option<Error>

Set if the peer is not talking TLS, but some other protocol. The caller should abort the connection, because the deframer cannot recover.

§buf: Vec<u8>

Buffer of data read from the socket, in the process of being parsed into messages.

For buffer size management, checkout out the read() method.

§joining_hs: Option<HandshakePayloadMeta>

If we’re in the middle of joining a handshake payload, this is the metadata.

§used: usize

What size prefix of buf is used.

Implementations§

source§

impl MessageDeframer

source

pub fn pop( &mut self, record_layer: &mut RecordLayer, ) -> Result<Option<Deframed>, Error>

Return any decrypted messages that the deframer has been able to parse.

Returns an Error if the deframer failed to parse some message contents or if decryption failed, Ok(None) if no full message is buffered or if trial decryption failed, and Ok(Some(_)) if a valid message was found and decrypted successfully.

source

fn set_err(&mut self, err: impl Into<Error>) -> Error

Fuses this deframer’s error and returns the set value.

Any future calls to pop will return err again.

source

fn append_hs( &mut self, version: ProtocolVersion, payload: &[u8], end: usize, quic: bool, ) -> Result<HandshakePayloadState, Error>

Write the handshake message contents into the buffer and update the metadata.

Returns true if a complete message is found.

source

pub fn read(&mut self, rd: &mut dyn Read) -> Result<usize>

Read some bytes from rd, and add them to our internal buffer.

source

fn prepare_read(&mut self) -> Result<(), &'static str>

Resize the internal buf if necessary for reading more bytes.

source

pub fn has_pending(&self) -> bool

Returns true if we have messages for the caller to process, either whole messages in our output queue or partial messages in our buffer.

source

fn discard(&mut self, taken: usize)

Discard taken bytes from the start of our buffer.

Trait Implementations§

source§

impl Default for MessageDeframer

source§

fn default() -> MessageDeframer

Returns the “default value” for a type. 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>,

§

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

§

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.