Skip to main content

FillStreams

Struct FillStreams 

Source
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: usize

How many of this subscription’s fill fetch streams are open.

§opened: u64

How 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: GroupOrder

The 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

Source§

fn clone(&self) -> FillStreams

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for FillStreams

Source§

impl Debug for FillStreams

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for FillStreams

Source§

impl PartialEq for FillStreams

Source§

fn eq(&self, other: &FillStreams) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for FillStreams

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more