Struct tokio_codec::Framed [−][src]
A unified Stream
and Sink
interface to an underlying I/O object, using
the Encoder
and Decoder
traits to encode and decode frames.
You can create a Framed
instance by using the AsyncRead::framed
adapter.
Implementations
impl<T, U> Framed<T, U> where
T: AsyncRead + AsyncWrite,
U: Decoder + Encoder,
[src]
T: AsyncRead + AsyncWrite,
U: Decoder + Encoder,
pub fn new(inner: T, codec: U) -> Framed<T, U>
[src]
Provides a Stream
and Sink
interface for reading and writing to this
Io
object, using Decode
and Encode
to read and write the raw data.
Raw I/O objects work with byte sequences, but higher-level code usually
wants to batch these into meaningful chunks, called “frames”. This
method layers framing on top of an I/O object, by using the Codec
traits to handle encoding and decoding of messages frames. Note that
the incoming and outgoing frame types may be distinct.
This function returns a single object that is both Stream
and
Sink
; grouping this into a single object is often useful for layering
things like gzip or TLS, which require both read and write access to the
underlying object.
If you want to work more directly with the streams and sink, consider
calling split
on the Framed
returned by this method, which will
break them into separate objects, allowing them to interact more easily.
impl<T, U> Framed<T, U>
[src]
pub fn from_parts(parts: FramedParts<T, U>) -> Framed<T, U>
[src]
Provides a Stream
and Sink
interface for reading and writing to this
Io
object, using Decode
and Encode
to read and write the raw data.
Raw I/O objects work with byte sequences, but higher-level code usually
wants to batch these into meaningful chunks, called “frames”. This
method layers framing on top of an I/O object, by using the Codec
traits to handle encoding and decoding of messages frames. Note that
the incoming and outgoing frame types may be distinct.
This function returns a single object that is both Stream
and
Sink
; grouping this into a single object is often useful for layering
things like gzip or TLS, which require both read and write access to the
underlying object.
This objects takes a stream and a readbuffer and a writebuffer. These field
can be obtained from an existing Framed
with the into_parts
method.
If you want to work more directly with the streams and sink, consider
calling split
on the Framed
returned by this method, which will
break them into separate objects, allowing them to interact more easily.
pub fn get_ref(&self) -> &T
[src]
Returns a reference to the underlying I/O stream wrapped by
Frame
.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
pub fn get_mut(&mut self) -> &mut T
[src]
Returns a mutable reference to the underlying I/O stream wrapped by
Frame
.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
pub fn codec(&self) -> &U
[src]
Returns a reference to the underlying codec wrapped by
Frame
.
Note that care should be taken to not tamper with the underlying codec as it may corrupt the stream of frames otherwise being worked with.
pub fn codec_mut(&mut self) -> &mut U
[src]
Returns a mutable reference to the underlying codec wrapped by
Frame
.
Note that care should be taken to not tamper with the underlying codec as it may corrupt the stream of frames otherwise being worked with.
pub fn into_inner(self) -> T
[src]
Consumes the Frame
, returning its underlying I/O stream.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
pub fn into_parts(self) -> FramedParts<T, U>
[src]
Consumes the Frame
, returning its underlying I/O stream, the buffer
with unprocessed data, and the codec.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
Trait Implementations
impl<T, U> Debug for Framed<T, U> where
T: Debug,
U: Debug,
[src]
T: Debug,
U: Debug,
impl<T, U> Sink for Framed<T, U> where
T: AsyncWrite,
U: Encoder,
<U as Encoder>::Error: From<Error>,
[src]
T: AsyncWrite,
U: Encoder,
<U as Encoder>::Error: From<Error>,
type SinkItem = <U as Encoder>::Item
The type of value that the sink accepts.
type SinkError = <U as Encoder>::Error
The type of value produced by the sink when an error occurs.
pub fn start_send(
&mut self,
item: <Framed<T, U> as Sink>::SinkItem
) -> Result<AsyncSink<<Framed<T, U> as Sink>::SinkItem>, <Framed<T, U> as Sink>::SinkError>
[src]
&mut self,
item: <Framed<T, U> as Sink>::SinkItem
) -> Result<AsyncSink<<Framed<T, U> as Sink>::SinkItem>, <Framed<T, U> as Sink>::SinkError>
pub fn poll_complete(
&mut self
) -> Result<Async<()>, <Framed<T, U> as Sink>::SinkError>
[src]
&mut self
) -> Result<Async<()>, <Framed<T, U> as Sink>::SinkError>
pub fn close(&mut self) -> Result<Async<()>, <Framed<T, U> as Sink>::SinkError>
[src]
pub fn wait(self) -> Wait<Self>
[src]
pub fn with<U, F, Fut>(self, f: F) -> With<Self, U, F, Fut> where
F: FnMut(U) -> Fut,
Fut: IntoFuture<Item = Self::SinkItem>,
<Fut as IntoFuture>::Error: From<Self::SinkError>,
[src]
F: FnMut(U) -> Fut,
Fut: IntoFuture<Item = Self::SinkItem>,
<Fut as IntoFuture>::Error: From<Self::SinkError>,
pub fn with_flat_map<U, F, St>(self, f: F) -> WithFlatMap<Self, U, F, St> where
F: FnMut(U) -> St,
St: Stream<Item = Self::SinkItem, Error = Self::SinkError>,
[src]
F: FnMut(U) -> St,
St: Stream<Item = Self::SinkItem, Error = Self::SinkError>,
pub fn sink_map_err<F, E>(self, f: F) -> SinkMapErr<Self, F> where
F: FnOnce(Self::SinkError) -> E,
[src]
F: FnOnce(Self::SinkError) -> E,
pub fn sink_from_err<E>(self) -> SinkFromErr<Self, E> where
E: From<Self::SinkError>,
[src]
E: From<Self::SinkError>,
pub fn buffer(self, amt: usize) -> Buffer<Self>
[src]
pub fn fanout<S>(self, other: S) -> Fanout<Self, S> where
S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,
Self::SinkItem: Clone,
[src]
S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,
Self::SinkItem: Clone,
pub fn flush(self) -> Flush<Self>
[src]
pub fn send(self, item: Self::SinkItem) -> Send<Self>
[src]
pub fn send_all<S>(self, stream: S) -> SendAll<Self, S> where
S: Stream<Item = Self::SinkItem>,
Self::SinkError: From<<S as Stream>::Error>,
[src]
S: Stream<Item = Self::SinkItem>,
Self::SinkError: From<<S as Stream>::Error>,
impl<T, U> Stream for Framed<T, U> where
T: AsyncRead,
U: Decoder,
[src]
T: AsyncRead,
U: Decoder,
type Item = <U as Decoder>::Item
The type of item this stream will yield on success.
type Error = <U as Decoder>::Error
The type of error this stream may generate.
pub fn poll(
&mut self
) -> Result<Async<Option<<Framed<T, U> as Stream>::Item>>, <Framed<T, U> as Stream>::Error>
[src]
&mut self
) -> Result<Async<Option<<Framed<T, U> as Stream>::Item>>, <Framed<T, U> as Stream>::Error>
pub fn wait(self) -> Wait<Self>
[src]
pub fn into_future(self) -> StreamFuture<Self>
[src]
pub fn map<U, F>(self, f: F) -> Map<Self, F> where
F: FnMut(Self::Item) -> U,
[src]
F: FnMut(Self::Item) -> U,
pub fn map_err<U, F>(self, f: F) -> MapErr<Self, F> where
F: FnMut(Self::Error) -> U,
[src]
F: FnMut(Self::Error) -> U,
pub fn filter<F>(self, f: F) -> Filter<Self, F> where
F: FnMut(&Self::Item) -> bool,
[src]
F: FnMut(&Self::Item) -> bool,
pub fn filter_map<F, B>(self, f: F) -> FilterMap<Self, F> where
F: FnMut(Self::Item) -> Option<B>,
[src]
F: FnMut(Self::Item) -> Option<B>,
pub fn then<F, U>(self, f: F) -> Then<Self, F, U> where
U: IntoFuture,
F: FnMut(Result<Self::Item, Self::Error>) -> U,
[src]
U: IntoFuture,
F: FnMut(Result<Self::Item, Self::Error>) -> U,
pub fn and_then<F, U>(self, f: F) -> AndThen<Self, F, U> where
U: IntoFuture<Error = Self::Error>,
F: FnMut(Self::Item) -> U,
[src]
U: IntoFuture<Error = Self::Error>,
F: FnMut(Self::Item) -> U,
pub fn or_else<F, U>(self, f: F) -> OrElse<Self, F, U> where
U: IntoFuture<Item = Self::Item>,
F: FnMut(Self::Error) -> U,
[src]
U: IntoFuture<Item = Self::Item>,
F: FnMut(Self::Error) -> U,
pub fn collect(self) -> Collect<Self>
[src]
pub fn concat2(self) -> Concat2<Self> where
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
Self::Item: Default,
[src]
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
Self::Item: Default,
pub fn concat(self) -> Concat<Self> where
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
[src]
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
pub fn fold<F, T, Fut>(self, init: T, f: F) -> Fold<Self, F, Fut, T> where
F: FnMut(T, Self::Item) -> Fut,
Fut: IntoFuture<Item = T>,
Self::Error: From<<Fut as IntoFuture>::Error>,
[src]
F: FnMut(T, Self::Item) -> Fut,
Fut: IntoFuture<Item = T>,
Self::Error: From<<Fut as IntoFuture>::Error>,
pub fn flatten(self) -> Flatten<Self> where
Self::Item: Stream,
<Self::Item as Stream>::Error: From<Self::Error>,
[src]
Self::Item: Stream,
<Self::Item as Stream>::Error: From<Self::Error>,
pub fn skip_while<P, R>(self, pred: P) -> SkipWhile<Self, P, R> where
R: IntoFuture<Item = bool, Error = Self::Error>,
P: FnMut(&Self::Item) -> R,
[src]
R: IntoFuture<Item = bool, Error = Self::Error>,
P: FnMut(&Self::Item) -> R,
pub fn take_while<P, R>(self, pred: P) -> TakeWhile<Self, P, R> where
R: IntoFuture<Item = bool, Error = Self::Error>,
P: FnMut(&Self::Item) -> R,
[src]
R: IntoFuture<Item = bool, Error = Self::Error>,
P: FnMut(&Self::Item) -> R,
pub fn for_each<F, U>(self, f: F) -> ForEach<Self, F, U> where
U: IntoFuture<Item = (), Error = Self::Error>,
F: FnMut(Self::Item) -> U,
[src]
U: IntoFuture<Item = (), Error = Self::Error>,
F: FnMut(Self::Item) -> U,
pub fn from_err<E>(self) -> FromErr<Self, E> where
E: From<Self::Error>,
[src]
E: From<Self::Error>,
pub fn take(self, amt: u64) -> Take<Self>
[src]
pub fn skip(self, amt: u64) -> Skip<Self>
[src]
pub fn fuse(self) -> Fuse<Self>
[src]
pub fn by_ref(&mut self) -> &mut Self
[src]
pub fn catch_unwind(self) -> CatchUnwind<Self> where
Self: UnwindSafe,
[src]
Self: UnwindSafe,
pub fn buffered(self, amt: usize) -> Buffered<Self> where
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error == Self::Error,
[src]
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error == Self::Error,
pub fn buffer_unordered(self, amt: usize) -> BufferUnordered<Self> where
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error == Self::Error,
[src]
Self::Item: IntoFuture,
<Self::Item as IntoFuture>::Error == Self::Error,
pub fn merge<S>(self, other: S) -> Merge<Self, S> where
S: Stream<Error = Self::Error>,
[src]
S: Stream<Error = Self::Error>,
pub fn zip<S>(self, other: S) -> Zip<Self, S> where
S: Stream<Error = Self::Error>,
[src]
S: Stream<Error = Self::Error>,
pub fn chain<S>(self, other: S) -> Chain<Self, S> where
S: Stream<Item = Self::Item, Error = Self::Error>,
[src]
S: Stream<Item = Self::Item, Error = Self::Error>,
pub fn peekable(self) -> Peekable<Self>
[src]
pub fn chunks(self, capacity: usize) -> Chunks<Self>
[src]
pub fn select<S>(self, other: S) -> Select<Self, S> where
S: Stream<Item = Self::Item, Error = Self::Error>,
[src]
S: Stream<Item = Self::Item, Error = Self::Error>,
pub fn forward<S>(self, sink: S) -> Forward<Self, S> where
S: Sink<SinkItem = Self::Item>,
Self::Error: From<<S as Sink>::SinkError>,
[src]
S: Sink<SinkItem = Self::Item>,
Self::Error: From<<S as Sink>::SinkError>,
pub fn split(self) -> (SplitSink<Self>, SplitStream<Self>) where
Self: Sink,
[src]
Self: Sink,
pub fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnMut(&Self::Item),
[src]
F: FnMut(&Self::Item),
pub fn inspect_err<F>(self, f: F) -> InspectErr<Self, F> where
F: FnMut(&Self::Error),
[src]
F: FnMut(&Self::Error),
Auto Trait Implementations
impl<T, U> RefUnwindSafe for Framed<T, U> where
T: RefUnwindSafe,
U: RefUnwindSafe,
T: RefUnwindSafe,
U: RefUnwindSafe,
impl<T, U> Send for Framed<T, U> where
T: Send,
U: Send,
T: Send,
U: Send,
impl<T, U> Sync for Framed<T, U> where
T: Sync,
U: Sync,
T: Sync,
U: Sync,
impl<T, U> Unpin for Framed<T, U> where
T: Unpin,
U: Unpin,
T: Unpin,
U: Unpin,
impl<T, U> UnwindSafe for Framed<T, U> where
T: UnwindSafe,
U: UnwindSafe,
T: UnwindSafe,
U: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,