struct FillStreams {
open: usize,
opened: u64,
group_order: GroupOrder,
}Expand description
What one subscription’s fill fetch streams amount to, from the point of view of an endpoint that has to attribute an arriving FETCH_HEADER and count the streams a PUBLISH_DONE reports.
There is no state machine here on purpose. A fill fetch stream has no
FETCH_OK and no REQUEST_ERROR (Section 5.1.3.1), so it has none of the
states FetchStateMachine exists to keep apart: it is opened, it carries
objects, and it ends with a FIN meaning the fill is complete or a reset
meaning it failed. Neither ending touches the subscription — “Resetting or
cancelling a fill fetch stream, by either endpoint, does not affect the
subscription, which continues to deliver objects using subscribe subgroups
and datagrams.”
Fields§
§open: usizeHow many of this subscription’s fill fetch streams are open.
opened: u64How many have been opened over the life of the subscription, ended or not.
Section 10.12 makes the count a PUBLISH_DONE field: Stream Count is the total the publisher opened, “including streams that contained no Objects (e.g., an empty Subgroup) and including any fill fetch streams”. So the number that matters is cumulative and the open count cannot answer it.
group_order: GroupOrderThe Group Order the fill’s Objects arrive in, resolved from the request
that asked for the fill by fill::group_order.
Held here because nothing on a fill fetch stream says which direction its
Group ID Deltas count in (Section 11.4.4.1) and the answer is in a
control message the stream never sees. Kept per subscription rather than
per stream for the reason the field above is: a fill fetch stream carries
its subscription’s Request ID and nothing else, so two of them cannot be
told apart here. A REQUEST_UPDATE that asks for a second fill with a
different order replaces this, which is right for the stream it opens
and wrong for one still running under the older order; a caller in that
position restarts the reader itself with
begin_fetch_objects.
Trait Implementations§
Source§impl Clone for FillStreams
impl Clone for FillStreams
Source§fn clone(&self) -> FillStreams
fn clone(&self) -> FillStreams
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more