reqrio 0.3.0-alpha3

A lightweight, high-performance, fingerprint-based HTTP request library.
Documentation
mod h1;
mod h2;

use crate::error::HlsResult;
use crate::hpack::HPackEncode;
use crate::reader::{ReadExt, Writer};
pub(super) use h1::H1HeaderReader;
pub(super) use h2::H2HeaderReader;
use reqtls::Url;

pub struct HeaderParam<'a> {
    pub(crate) url: &'a Url,
    pub(crate) encoder: &'a mut HPackEncode,
    pub(crate) stream_identifier: &'a u32,
    pub(crate) body_len: usize,
    pub(crate) weight: &'a u8,
    pub(crate) priority: &'a bool,
}

pub enum HeaderReader<'a> {
    H1(H1HeaderReader<'a>),
    H2(H2HeaderReader<'a>),
}

impl<'a> ReadExt for HeaderReader<'a> {
    fn wrote(&self) -> bool {
        match self {
            HeaderReader::H1(h1) => h1.wrote(),
            HeaderReader::H2(h2) => h2.wrote(),
        }
    }

    fn len(&self) -> usize {
        match self {
            HeaderReader::H1(h1) => h1.len(),
            HeaderReader::H2(h2) => h2.len(),
        }
    }

    fn read(&mut self, buf: &mut Writer) -> HlsResult<usize> {
        match self {
            HeaderReader::H1(h1) => h1.read(buf),
            HeaderReader::H2(h2) => h2.read(buf),
        }
    }
}