pub struct Stream {
pub window: i32,
pub attempts: u8,
pub state: StreamState,
pub front_received_end_of_stream: bool,
pub back_received_end_of_stream: bool,
pub front_data_received: usize,
pub back_data_received: usize,
pub request_counted: bool,
pub front: Kawa<Checkout>,
pub back: Kawa<Checkout>,
pub context: HttpContext,
pub metrics: SessionMetrics,
}Fields§
§window: i32§attempts: u8§state: StreamState§front_received_end_of_stream: boolTrue when the frontend connection has received end_of_stream from the client.
back_received_end_of_stream: boolTrue when the backend connection has received end_of_stream from the backend server.
front_data_received: usizeTracks total DATA payload bytes received on the frontend for content-length validation (RFC 9113 §8.1.1)
back_data_received: usizeTracks total DATA payload bytes received on the backend for content-length validation (RFC 9113 §8.1.1)
request_counted: boolTrue when gauge_add!(names::http::ACTIVE_REQUESTS, 1) was emitted for this stream.
Prevents underflow when generate_access_log is called for streams that never
had their request fully parsed (idle timeouts, malformed requests).
front: Kawa<Checkout>§back: Kawa<Checkout>§context: HttpContext§metrics: SessionMetricsImplementations§
Source§impl Stream
impl Stream
pub fn new( pool: Weak<RefCell<Pool>>, context: HttpContext, window: u32, ) -> Option<Self>
Sourcepub fn linked_token(&self) -> Option<Token>
pub fn linked_token(&self) -> Option<Token>
Convenience accessor for the backend token when the stream is Linked.
Used by access-log emission sites to look up the backend socket on the
owning Endpoint/Router without re-pattern-matching state inline.
Sourcepub fn is_quiesced(&self) -> bool
pub fn is_quiesced(&self) -> bool
Returns true when both front and back kawa buffers are in a terminal or initial state with no pending data. Used during shutdown to skip streams that have already completed their work.
pub fn split(&mut self, position: &Position) -> StreamParts<'_>
Sourcepub fn generate_access_log<L>(
&mut self,
error: bool,
message: Option<&str>,
listener: Rc<RefCell<L>>,
client_rtt: Option<Duration>,
server_rtt: Option<Duration>,
)where
L: ListenerHandler + L7ListenerHandler,
pub fn generate_access_log<L>(
&mut self,
error: bool,
message: Option<&str>,
listener: Rc<RefCell<L>>,
client_rtt: Option<Duration>,
server_rtt: Option<Duration>,
)where
L: ListenerHandler + L7ListenerHandler,
Emit the access log for this stream.
client_rtt/server_rtt are passed in by the caller because the
Stream does not own a socket reference — the frontend socket lives
on the parent Mux/connection and the backend socket lives on
Router.backends.get(token). Each caller snapshots the two
getsockopt(TCP_INFO) values from the sockets it can reach, mirroring
the inline pattern used by the kawa_h1, pipe, and TCP-frontend
access-log sites.