use crate::flowcontrol::FlowControl;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum StreamState {
#[allow(dead_code)]
Idle,
Open,
HalfClosedLocal,
HalfClosedRemote,
Closed,
}
pub(crate) struct H2Stream {
pub state: StreamState,
pub recv_window: FlowControl,
pub send_window: FlowControl,
pub header_buf: Vec<u8>,
pub receiving_headers: bool,
pub headers_end_stream: bool,
pub received_initial_response: bool,
}
impl H2Stream {
pub fn new(initial_recv_window: i64, initial_send_window: i64) -> Self {
Self {
state: StreamState::Open,
recv_window: FlowControl::new(initial_recv_window),
send_window: FlowControl::new(initial_send_window),
header_buf: Vec::new(),
receiving_headers: false,
headers_end_stream: false,
received_initial_response: false,
}
}
}