Struct Connection

Source
pub struct Connection<T: AsyncRead + AsyncWrite, Codec: Encoder + Decoder> { /* private fields */ }
Expand description

Connection type implemented on top of AsyncRead + AsyncWrite and an Encoder/Decoder This provides a simple / generic base object for managing tokio connections

Implementations§

Source§

impl<T, Codec> Connection<T, Codec>
where T: AsyncWrite + AsyncRead + Send + 'static, Codec: Encoder + Decoder + Clone + Send + 'static, <Codec as Decoder>::Item: Send, <Codec as Decoder>::Error: Send + Debug,

Source

pub fn from_socket(stream: T, codec: Codec) -> Connection<T, Codec>

Create a new connection instance over an arbitrary stream

Source§

impl<T, Codec> Connection<T, Codec>
where T: AsyncWrite + AsyncRead + Send + 'static, Codec: Encoder + Decoder + Clone + Send + 'static, <Codec as Decoder>::Item: Send, <Codec as Decoder>::Error: Send + Debug,

Source

pub fn shutdown(self)

Exit closes the handler task if bound note this will panic if exit has already been called

Source§

impl<C> Connection<TcpStream, C>
where C: Encoder + Decoder + Clone + Send + 'static, <C as Decoder>::Item: Send, <C as Decoder>::Error: Send + Debug,

Source

pub fn new( addr: &SocketAddr, codec: C, ) -> impl Future<Item = Connection<TcpStream, C>, Error = Error>

Create a new client connected to the provided TCP socket address

Source

pub fn close(self)

Source§

impl<C> Connection<UnixStream, C>
where C: Encoder + Decoder + Clone + Send + 'static, <C as Decoder>::Item: Send, <C as Decoder>::Error: Send + Debug,

Source

pub fn new( path: &str, codec: C, ) -> impl Future<Item = UnixConnection<C>, Error = Error>

Create a new client connected to the provided unix socket address

Source

pub fn close(self)

Trait Implementations§

Source§

impl<T, Codec> Clone for Connection<T, Codec>
where T: AsyncWrite + AsyncRead, Codec: Encoder + Decoder,

Clone over generic connector All instances of a given connector contain the same arc/mutex protected information

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T, Codec> Sink for Connection<T, Codec>
where T: AsyncWrite + AsyncRead, Codec: Encoder + Decoder,

Sink implementation allows sending messages over a connection

Source§

type SinkItem = <Codec as Encoder>::Item

The type of value that the sink accepts.
Source§

type SinkError = <Codec as Encoder>::Error

The type of value produced by the sink when an error occurs.
Source§

fn start_send( &mut self, item: Self::SinkItem, ) -> Result<AsyncSink<Self::SinkItem>, Self::SinkError>

Begin the process of sending a value to the sink. Read more
Source§

fn poll_complete(&mut self) -> Result<Async<()>, Self::SinkError>

Flush all output from this sink, if necessary. Read more
Source§

fn close(&mut self) -> Result<Async<()>, Self::SinkError>

A method to indicate that no more values will ever be pushed into this sink. Read more
Source§

fn wait(self) -> Wait<Self>
where Self: Sized,

Creates a new object which will produce a synchronous sink. Read more
Source§

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>, Self: Sized,

Composes a function in front of the sink. Read more
Source§

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>, Self: Sized,

Composes a function in front of the sink. Read more
Source§

fn sink_map_err<F, E>(self, f: F) -> SinkMapErr<Self, F>
where F: FnOnce(Self::SinkError) -> E, Self: Sized,

Transforms the error returned by the sink.
Source§

fn sink_from_err<E>(self) -> SinkFromErr<Self, E>
where E: From<Self::SinkError>, Self: Sized,

Map this sink’s error to any error implementing From for this sink’s Error, returning a new sink. Read more
Source§

fn buffer(self, amt: usize) -> Buffer<Self>
where Self: Sized,

Adds a fixed-size buffer to the current sink. Read more
Source§

fn fanout<S>(self, other: S) -> Fanout<Self, S>
where Self: Sized, Self::SinkItem: Clone, S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,

Fanout items to multiple sinks. Read more
Source§

fn flush(self) -> Flush<Self>
where Self: Sized,

A future that completes when the sink has finished processing all pending requests. Read more
Source§

fn send(self, item: Self::SinkItem) -> Send<Self>
where Self: Sized,

A future that completes after the given item has been fully processed into the sink, including flushing. Read more
Source§

fn send_all<S>(self, stream: S) -> SendAll<Self, S>
where S: Stream<Item = Self::SinkItem>, Self::SinkError: From<<S as Stream>::Error>, Self: Sized,

A future that completes after the given stream has been fully processed into the sink, including flushing. Read more
Source§

impl<T, Codec> Stream for Connection<T, Codec>
where T: AsyncWrite + AsyncRead, Codec: Encoder + Decoder,

Stream implementation allows receiving messages from a connection

Source§

type Item = <Codec as Decoder>::Item

The type of item this stream will yield on success.
Source§

type Error = <Codec as Decoder>::Error

The type of error this stream may generate.
Source§

fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error>

Attempt to pull out the next value of this stream, returning None if the stream is finished. Read more
Source§

fn wait(self) -> Wait<Self>
where Self: Sized,

Creates an iterator which blocks the current thread until each item of this stream is resolved. Read more
Source§

fn into_future(self) -> StreamFuture<Self>
where Self: Sized,

Converts this stream into a Future. Read more
Source§

fn map<U, F>(self, f: F) -> Map<Self, F>
where F: FnMut(Self::Item) -> U, Self: Sized,

Converts a stream of type T to a stream of type U. Read more
Source§

fn map_err<U, F>(self, f: F) -> MapErr<Self, F>
where F: FnMut(Self::Error) -> U, Self: Sized,

Converts a stream of error type T to a stream of error type U. Read more
Source§

fn filter<F>(self, f: F) -> Filter<Self, F>
where F: FnMut(&Self::Item) -> bool, Self: Sized,

Filters the values produced by this stream according to the provided predicate. Read more
Source§

fn filter_map<F, B>(self, f: F) -> FilterMap<Self, F>
where F: FnMut(Self::Item) -> Option<B>, Self: Sized,

Filters the values produced by this stream while simultaneously mapping them to a different type. Read more
Source§

fn then<F, U>(self, f: F) -> Then<Self, F, U>
where F: FnMut(Result<Self::Item, Self::Error>) -> U, U: IntoFuture, Self: Sized,

Chain on a computation for when a value is ready, passing the resulting item to the provided closure f. Read more
Source§

fn and_then<F, U>(self, f: F) -> AndThen<Self, F, U>
where F: FnMut(Self::Item) -> U, U: IntoFuture<Error = Self::Error>, Self: Sized,

Chain on a computation for when a value is ready, passing the successful results to the provided closure f. Read more
Source§

fn or_else<F, U>(self, f: F) -> OrElse<Self, F, U>
where F: FnMut(Self::Error) -> U, U: IntoFuture<Item = Self::Item>, Self: Sized,

Chain on a computation for when an error happens, passing the erroneous result to the provided closure f. Read more
Source§

fn collect(self) -> Collect<Self>
where Self: Sized,

Collect all of the values of this stream into a vector, returning a future representing the result of that computation. Read more
Source§

fn concat2(self) -> Concat2<Self>
where Self: Sized, Self::Item: Extend<<Self::Item as IntoIterator>::Item> + IntoIterator + Default,

Concatenate all results of a stream into a single extendable destination, returning a future representing the end result. Read more
Source§

fn concat(self) -> Concat<Self>
where Self: Sized, Self::Item: Extend<<Self::Item as IntoIterator>::Item> + IntoIterator,

👎Deprecated since 0.1.14: please use Stream::concat2 instead
Concatenate all results of a stream into a single extendable destination, returning a future representing the end result. Read more
Source§

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>, Self: Sized,

Execute an accumulating computation over a stream, collecting all the values into one final result. Read more
Source§

fn flatten(self) -> Flatten<Self>
where Self::Item: Stream, <Self::Item as Stream>::Error: From<Self::Error>, Self: Sized,

Flattens a stream of streams into just one continuous stream. Read more
Source§

fn skip_while<P, R>(self, pred: P) -> SkipWhile<Self, P, R>
where P: FnMut(&Self::Item) -> R, R: IntoFuture<Item = bool, Error = Self::Error>, Self: Sized,

Skip elements on this stream while the predicate provided resolves to true. Read more
Source§

fn take_while<P, R>(self, pred: P) -> TakeWhile<Self, P, R>
where P: FnMut(&Self::Item) -> R, R: IntoFuture<Item = bool, Error = Self::Error>, Self: Sized,

Take elements from this stream while the predicate provided resolves to true. Read more
Source§

fn for_each<F, U>(self, f: F) -> ForEach<Self, F, U>
where F: FnMut(Self::Item) -> U, U: IntoFuture<Item = (), Error = Self::Error>, Self: Sized,

Runs this stream to completion, executing the provided closure for each element on the stream. Read more
Source§

fn from_err<E>(self) -> FromErr<Self, E>
where E: From<Self::Error>, Self: Sized,

Map this stream’s error to any error implementing From for this stream’s Error, returning a new stream. Read more
Source§

fn take(self, amt: u64) -> Take<Self>
where Self: Sized,

Creates a new stream of at most amt items of the underlying stream. Read more
Source§

fn skip(self, amt: u64) -> Skip<Self>
where Self: Sized,

Creates a new stream which skips amt items of the underlying stream. Read more
Source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Fuse a stream such that poll will never again be called once it has finished. Read more
Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Borrows a stream, rather than consuming it. Read more
Source§

fn catch_unwind(self) -> CatchUnwind<Self>
where Self: Sized + UnwindSafe,

Catches unwinding panics while polling the stream. Read more
Source§

fn buffered(self, amt: usize) -> Buffered<Self>
where Self::Item: IntoFuture<Error = Self::Error>, Self: Sized,

An adaptor for creating a buffered list of pending futures. Read more
Source§

fn buffer_unordered(self, amt: usize) -> BufferUnordered<Self>
where Self::Item: IntoFuture<Error = Self::Error>, Self: Sized,

An adaptor for creating a buffered list of pending futures (unordered). Read more
Source§

fn merge<S>(self, other: S) -> Merge<Self, S>
where S: Stream<Error = Self::Error>, Self: Sized,

👎Deprecated: functionality provided by select now
An adapter for merging the output of two streams. Read more
Source§

fn zip<S>(self, other: S) -> Zip<Self, S>
where S: Stream<Error = Self::Error>, Self: Sized,

An adapter for zipping two streams together. Read more
Source§

fn chain<S>(self, other: S) -> Chain<Self, S>
where S: Stream<Item = Self::Item, Error = Self::Error>, Self: Sized,

Adapter for chaining two stream. Read more
Source§

fn peekable(self) -> Peekable<Self>
where Self: Sized,

Creates a new stream which exposes a peek method. Read more
Source§

fn chunks(self, capacity: usize) -> Chunks<Self>
where Self: Sized,

An adaptor for chunking up items of the stream inside a vector. Read more
Source§

fn select<S>(self, other: S) -> Select<Self, S>
where S: Stream<Item = Self::Item, Error = Self::Error>, Self: Sized,

Creates a stream that selects the next element from either this stream or the provided one, whichever is ready first. Read more
Source§

fn forward<S>(self, sink: S) -> Forward<Self, S>
where S: Sink<SinkItem = Self::Item>, Self::Error: From<<S as Sink>::SinkError>, Self: Sized,

A future that completes after the given stream has been fully processed into the sink, including flushing. Read more
Source§

fn split(self) -> (SplitSink<Self>, SplitStream<Self>)
where Self: Sized + Sink,

Splits this Stream + Sink object into separate Stream and Sink objects. Read more
Source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where F: FnMut(&Self::Item), Self: Sized,

Do something with each item of this stream, afterwards passing it on. Read more
Source§

fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
where F: FnMut(&Self::Error), Self: Sized,

Do something with the error of this stream, afterwards passing it on. Read more
Source§

impl<T, Codec> Send for Connection<T, Codec>
where T: AsyncWrite + AsyncRead, Codec: Encoder + Decoder,

Blank send

Auto Trait Implementations§

§

impl<T, Codec> Freeze for Connection<T, Codec>

§

impl<T, Codec> RefUnwindSafe for Connection<T, Codec>

§

impl<T, Codec> Sync for Connection<T, Codec>
where T: Send, Codec: Send,

§

impl<T, Codec> Unpin for Connection<T, Codec>

§

impl<T, Codec> UnwindSafe for Connection<T, Codec>

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> 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, 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> StreamExt for T
where T: Stream + ?Sized,

Source§

fn throttle(self, duration: Duration) -> Throttle<Self>
where Self: Sized,

Throttle down the stream by enforcing a fixed delay between items. Read more
Source§

fn enumerate(self) -> Enumerate<Self>
where Self: Sized,

Creates a new stream which gives the current iteration count as well as the next value. Read more
Source§

fn timeout(self, timeout: Duration) -> Timeout<Self>
where Self: Sized,

Creates a new stream which allows self until timeout. Read more
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.