reth_eth_wire

Trait CanDisconnect

Source
pub trait CanDisconnect<T>: Sink<T> + Unpin {
    // Required method
    fn disconnect(
        &mut self,
        reason: DisconnectReason,
    ) -> impl Future<Output = Result<(), <Self as Sink<T>>::Error>> + Send;
}
Expand description

This trait is meant to allow higher level protocols like eth to disconnect from a peer, using lower-level disconnect functions (such as those that exist in the p2p protocol) if the underlying stream supports it.

Required Methods§

Source

fn disconnect( &mut self, reason: DisconnectReason, ) -> impl Future<Output = Result<(), <Self as Sink<T>>::Error>> + Send

Disconnects from the underlying stream, using a DisconnectReason as disconnect information if the stream implements a protocol that can carry the additional disconnect metadata.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<S> CanDisconnect<Bytes> for ECIESStream<S>
where S: AsyncWrite + Unpin + Send,

Source§

async fn disconnect(&mut self, _reason: DisconnectReason) -> Result<(), Error>

Source§

impl<T, I, U> CanDisconnect<I> for Framed<T, U>
where T: AsyncWrite + Unpin + Send, U: Encoder<I> + Send,

Source§

async fn disconnect( &mut self, _reason: DisconnectReason, ) -> Result<(), <Self as Sink<I>>::Error>

Implementors§

Source§

impl CanDisconnect<Bytes> for ProtocolProxy

Source§

impl<S> CanDisconnect<Bytes> for P2PStream<S>
where S: Sink<Bytes, Error = Error> + Unpin + Send + Sync,

Source§

impl<S, N> CanDisconnect<EthMessage<N>> for EthStream<S, N>
where S: CanDisconnect<Bytes> + Send, EthStreamError: From<<S as Sink<Bytes>>::Error>, N: NetworkPrimitives,