[][src]Struct stream_multiplexer::Multiplexer

pub struct Multiplexer<Item, ReadSt, WriteSi, OutSt, Id = IncrementIdGen> where
    ReadSt: Stream
{ /* fields omitted */ }

Manages incoming streams of data and the enqueueing of outgoing data.

Outgoing streams have their own buffer of messages and do not affect other streams. Incoming streams have their messages routed into channels that have their own backpressure.

Methods

impl<Item, ReadSt, WriteSi, OutSt> Multiplexer<Item, ReadSt, WriteSi, OutSt, IncrementIdGen> where
    ReadSt: Stream + Unpin,
    WriteSi: Sink<Item> + Unpin
[src]

pub fn new(
    sender_buffer_size: usize,
    outgoing: OutSt,
    incoming_packet_sinks: Vec<Sender<IncomingPacket<ReadSt::Item>>>
) -> Self
[src]

Calls with_id_gen, giving it an IncrementIdGen as well as the rest of the arguments.

impl<Item, ReadSt, WriteSi, OutSt, Id> Multiplexer<Item, ReadSt, WriteSi, OutSt, Id> where
    ReadSt: Stream + Unpin,
    WriteSi: Sink<Item> + Unpin
[src]

pub fn with_id_gen(
    sender_buffer_size: usize,
    id_gen: Id,
    outgoing: OutSt,
    incoming_packet_sinks: Vec<Sender<IncomingPacket<ReadSt::Item>>>
) -> Self
[src]

Initializes with a stream that provides the outgoing packets which will be enqueued to the corresponding streams, and a vector of sinks that represent different "channels" or "categories" of data.

impl<Item, ReadSt, WriteSi, OutSt, Id> Multiplexer<Item, ReadSt, WriteSi, OutSt, Id> where
    Id: IdGen,
    OutSt: Stream<Item = OutgoingPacket<Item>>,
    ReadSt: Stream,
    WriteSi: Sink<Item>,
    WriteSi::Error: Debug,
    Id: Send + Unpin + 'static,
    Item: Clone + Send + Sync + 'static,
    OutSt: Send + Unpin + 'static,
    ReadSt: Send + Unpin + 'static,
    ReadSt::Item: Send,
    WriteSi: Send + Unpin + 'static, 
[src]

pub async fn run<V, U>(
    __arg0: Self,
    __arg1: V,
    __arg2: U
) -> JoinHandle<IoResult<()>> where
    V: Stream<Item = IoResult<(WriteSi, ReadSt)>>,
    V: Unpin + Send + 'static,
    U: Stream<Item = ControlMessage> + Send + Unpin + 'static, 
[src]

Start the multiplexer. Giving it a stream of incoming connection halves and a stream for ControlMessages.

Trait Implementations

impl<Item, ReadSt, WriteSi, OutSt, Id> Debug for Multiplexer<Item, ReadSt, WriteSi, OutSt, Id> where
    ReadSt: Stream
[src]

Auto Trait Implementations

impl<Item, ReadSt, WriteSi, OutSt, Id = IncrementIdGen> !RefUnwindSafe for Multiplexer<Item, ReadSt, WriteSi, OutSt, Id>

impl<Item, ReadSt, WriteSi, OutSt, Id> Send for Multiplexer<Item, ReadSt, WriteSi, OutSt, Id> where
    Id: Send,
    Item: Send,
    OutSt: Send,
    ReadSt: Send,
    WriteSi: Send,
    <ReadSt as Stream>::Item: Send

impl<Item, ReadSt, WriteSi, OutSt, Id> Sync for Multiplexer<Item, ReadSt, WriteSi, OutSt, Id> where
    Id: Sync,
    Item: Send + Sync,
    OutSt: Sync,
    ReadSt: Send + Sync,
    WriteSi: Send + Sync,
    <ReadSt as Stream>::Item: Send

impl<Item, ReadSt, WriteSi, OutSt, Id> Unpin for Multiplexer<Item, ReadSt, WriteSi, OutSt, Id> where
    Id: Unpin,
    OutSt: Unpin

impl<Item, ReadSt, WriteSi, OutSt, Id = IncrementIdGen> !UnwindSafe for Multiplexer<Item, ReadSt, WriteSi, OutSt, Id>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> WithSubscriber for T[src]