MultiStream

Struct MultiStream 

Source
pub struct MultiStream<B: EventStreamBackend> {
    pub logger: Arc<ServerLogger>,
    /* private fields */
}
Expand description

Manages multiple streams with synchronization logic based on shared bindings.

This struct handles the creation and alignment of streams to ensure proper synchronization when bindings (e.g., buffers) are shared across different streams.

Fields§

§logger: Arc<ServerLogger>

The logger used by the server.

Implementations§

Source§

impl<B: EventStreamBackend> MultiStream<B>

Source

pub fn new(logger: Arc<ServerLogger>, backend: B, max_streams: u8) -> Self

Creates an empty multi-stream.

Source

pub fn gc(&mut self, gc: GcTask<B>)

Enqueue a task to be cleaned.

Source

pub fn resolve<'a>( &mut self, stream_id: StreamId, bindings: impl Iterator<Item = &'a Binding>, ) -> ResolvedStreams<'_, B>

Resolves and returns a mutable reference to the stream for the given ID, performing any necessary alignment based on the provided bindings.

This method ensures that the stream is synchronized with any shared bindings from other streams before returning the stream reference.

Trait Implementations§

Source§

impl<B: Debug + EventStreamBackend> Debug for MultiStream<B>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<B> Freeze for MultiStream<B>
where B: Freeze,

§

impl<B> RefUnwindSafe for MultiStream<B>

§

impl<B> Send for MultiStream<B>
where B: Send, <B as EventStreamBackend>::Stream: Send,

§

impl<B> Sync for MultiStream<B>
where B: Sync, <B as EventStreamBackend>::Stream: Sync,

§

impl<B> Unpin for MultiStream<B>
where B: Unpin, <B as EventStreamBackend>::Stream: Unpin,

§

impl<B> UnwindSafe for MultiStream<B>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

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

Source§

fn vzip(self) -> V