Skip to main content

TeeHandle

Struct TeeHandle 

Source
pub struct TeeHandle { /* private fields */ }
Expand description

A cheaply-cloneable handle for adding or removing a Tee’s sinks while the pipeline is running. It deliberately keeps only a Weak reference to the Tee’s shared state: retaining a handle after the pipeline finishes must not keep downstream sinks or the pipeline’s crate::bus::Bus sender alive. Once the Tee is gone, TeeHandle::branch returns None.

Implementations§

Source§

impl TeeHandle

Source

pub fn branch(&self) -> Option<ChainBuilder>

A crate::pipeline::ChainBuilder pre-wired with this Tee’s own Context — lets a caller build a whole new branch (.pipe(...) chains, ending in .to(...)) at any point after the pipeline started running, then hand the result to TeeHandle::attach, without needing to retain the pipeline context separately around separately. Returns None once the Tee has been dropped.

Source

pub fn attach(&self, branch: DetachedBranch) -> Result<BranchId>

Attaches a runtime branch, returning the stable ID used to remove it. Fixed initial branches belong in TeeBuilder. During a lifecycle or seek operation this returns GraphError::TimelineOperationInProgress immediately; build a fresh detached branch and retry after the operation finishes.

Source

pub fn detach(&self, branch_id: BranchId) -> Result<()>

Detaches exactly the branch returned by TeeHandle::attach. The runtime peer and every graph node owned by it disappear in the same transaction. Names are deliberately not used as graph keys.

This abandons whatever the branch still held: no EOS is sent, so a stateful codec does not flush and a muxer does not finalize. That is what makes it the right call for a branch that is failing or wedged — see TeeHandle::finish_branch for ending one that is working.

Source

pub fn finish_branch(&self, branch_id: BranchId) -> Result<()>

Ends one branch the way a recording ends: sends it an ordered Eos behind everything already queued for it, so stateful codecs flush their delayed output and a muxer writes its trailer, and detaches it.

Returns as soon as the Eos is on its way. Draining it — which means an encoder flush, a container’s trailer, and joining the branch’s own Queue workers — happens on a thread this Tee owns and joins, so a caller on a UI thread neither blocks nor has anything left to remember: branch_id is already invalid when this returns, exactly as after TeeHandle::detach. Watch the bus for the terminal’s BusEvent::Eos to learn when the branch’s output is actually complete — a file is only finished then, not when this call returns.

Siblings are untouched: the Eos goes into this branch’s pad alone, unlike one arriving at the Tee itself, which every branch sees.

The ordering guarantee is against what this Tee has already handed the branch — everything queued for it arrives before the Eos. It is not against buffers still upstream: anything the Tee has not consumed yet when this is called belongs to the stream after the stop point and never reaches this branch. There is no ordering between the two except the one the caller creates by waiting for what it wants included.

Source

pub fn detach_branch_containing(&self, element: ElementId) -> Result<()>

Resolves the owning branch from any element ID inside it and detaches that branch. Useful when an error is attributed to a stage behind a queue rather than to the branch root.

Source

pub fn sink_count(&self) -> usize

Returns the number of currently attached output branches.

Returns zero after the tee element has been dropped.

Trait Implementations§

Source§

impl Clone for TeeHandle

Source§

fn clone(&self) -> TeeHandle

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

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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> 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 = !

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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