[][src]Trait solicit::http::frame::builder::FrameBuilder

pub trait FrameBuilder: Write + Seek {
    fn write_header(&mut self, header: FrameHeader) -> Result<()> { ... }
fn overwrite_header(&mut self, header: FrameHeader) -> Result<()> { ... }
fn copy_bytes_from<R: Read>(&mut self, provider: &mut R) -> Result<u64>
    where
        Self: Sized
, { ... }
fn write_padding(&mut self, padding_length: u8) -> Result<()> { ... }
fn write_u32(&mut self, num: u32) -> Result<()> { ... } }

A trait that provides additional methods for serializing HTTP/2 frames.

All methods have a default implementation in terms of the io::Write API, but types can provide specialized more efficient implementations if possible. This is effectively a workaround for specialization not existing yet in Rust.

Provided methods

fn write_header(&mut self, header: FrameHeader) -> Result<()>

Write the given frame header as the next octets (i.e. without moving the cursor to the beginning of the buffer).

fn overwrite_header(&mut self, header: FrameHeader) -> Result<()>

Overwrite the previously written header, assuming it's the first byte sequence of the buffer.

The default implementation seeks to the beginning of the buffer, writes the header, and then moves the cursor back to its previos position (i.e. offset from the beginning).

fn copy_bytes_from<R: Read>(&mut self, provider: &mut R) -> Result<u64> where
    Self: Sized

Copy all available bytes from the given io::Read instance.

This method allows poor man's specialization for types that can implement the copy more efficiently than the io::copy function does (i.e. without the intermediate read into a stack-allocated buffer).

fn write_padding(&mut self, padding_length: u8) -> Result<()>

Write the given number of padding octets.

The default implementation invokes the underlying Writer's write method padding_length times.

Other FrameBuilder implementations could implement it more efficiently (e.g. if it is known that the FrameBuilder is backed by a zeroed buffer, there's no need to write anything, only increment a cursor/offset).

fn write_u32(&mut self, num: u32) -> Result<()>

Write the given unsigned 32 bit integer to the underlying stream. The integer is written as four bytes in network endian style.

Loading content...

Implementations on Foreign Types

impl FrameBuilder for Cursor<Vec<u8>>[src]

Loading content...

Implementors

Loading content...