pub enum H2ControlFlushTarget {
Proceed,
Done(MuxResult),
Stalled,
FlushOutput,
}Expand description
What ConnectionH2::flush_pending_control_frames wants its caller to do
with the pass it just ran a control-frame preamble over.
Self::Stalled is what replaces the TLS re-arm the stalled-drain tails
used to perform inline. An output flush that stalled has to be followed by
a FRESH H2Shell::tls_wants_write — that write is what changes the
answer, so no value read before it can stand in — and the shell that owns
the socket is the layer that reads it.
Self::Proceed is the former None: it carries no MuxResult because
the preamble did not end the pass, and writable() falls through to its
(H2State, Position) dispatch.
Variants§
Proceed
Nothing owed, nothing stalled: writable() proceeds into its state
dispatch.
Done(MuxResult)
The preamble ended the pass by itself — a SETTINGS-ACK timeout GOAWAY or an RST_STREAM lifetime-cap GOAWAY. This is the pass’s result, and no TLS query follows it.
Stalled
The output flush stalled. Read tls_wants_write, hand it to
ConnectionH2::ensure_tls_flushed, and answer the pass with
MuxResult::Continue.
FlushOutput
The connection’s ordered output queue holds bytes: the control frames
this walk just serialised behind whatever was already queued. Drain
ConnectionH2::output_pending to the socket and answer with
ConnectionH2::handle_control_flush.