Skip to main content

ControlOutcome

Struct ControlOutcome 

Source
pub struct ControlOutcome {
    pub stopped: bool,
    pub paused_for: Duration,
}
Expand description

What draining pending source requests actually did — whether Stop or source-only Finish ended it, and how long (if any) was spent frozen inside a Pause/Resume pair. A source built on wall-clock scheduling (an elapsed-time budget like crate::elements::TestAudioSource/ crate::elements::AudioMixer, or an absolute next-tick deadline like crate::elements::TestVideoSource/DxgiCaptureSource) has to fold paused_for back into its own schedule after every drain_control call — real (Instant) time keeps moving during a Pause, but the media timeline must not, or Resume would look like a burst of catch-up work owed all at once.

Fields§

§stopped: bool

true if either Stop or source-only Finish was seen: the caller should return Ok(()) immediately. Stop abandons without EOS; Finish has already pushed ordered EOS from the source boundary. Keeping this terminal flag true for both also makes existing custom source loops honor the new graceful request without continuing to emit after EOS.

§paused_for: Duration

Wall-clock time from starting the synchronous downstream Pause cascade through finishing the matching Resume (or terminating Stop) cascade during this call — Duration::ZERO if no Pause was seen. Still meaningful even when stopped is true (the sender simply going away while paused is treated the same as Stop, see wait_out_pause), so a caller that also tracks its own paused-time total can fold this in unconditionally rather than only on the non-stopped path.

Trait Implementations§

Source§

impl Clone for ControlOutcome

Source§

fn clone(&self) -> ControlOutcome

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 ControlOutcome

Source§

impl Debug for ControlOutcome

Source§

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

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

impl Default for ControlOutcome

Source§

fn default() -> ControlOutcome

Returns the “default value” for a type. Read more
Source§

impl Eq for ControlOutcome

Source§

impl PartialEq for ControlOutcome

Source§

fn eq(&self, other: &ControlOutcome) -> 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 ControlOutcome

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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
§

impl<T> CryptoSafe for T
where T: Send + Sync + Debug,

§

impl<T> CryptoSafe for T

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.

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

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