Skip to main content

ConnectionHandler

Trait ConnectionHandler 

Source
pub trait ConnectionHandler:
    Send
    + Sync
    + 'static {
    type Connection: Stream<Item = BytesMut> + Send + 'static;

    // Required methods
    fn protocol(&self) -> Protocol;
    fn on_unsupported_by_peer(
        self,
        supported: &SharedCapabilities,
        direction: Direction,
        peer_id: FixedBytes<64>,
    ) -> OnNotSupported;
    fn into_connection(
        self,
        direction: Direction,
        peer_id: FixedBytes<64>,
        conn: ProtocolConnection,
    ) -> Self::Connection;

    // Provided method
    fn inbound_limits(&self) -> ProtocolIngressLimits { ... }
}
Expand description

A trait that allows to authenticate a protocol after the RLPx connection was established.

Required Associated Types§

Source

type Connection: Stream<Item = BytesMut> + Send + 'static

The connection that yields messages to send to the remote.

The connection will be closed when this stream resolves.

Required Methods§

Source

fn protocol(&self) -> Protocol

Returns the protocol to announce when the RLPx connection will be established.

This will be negotiated with the remote peer.

Source

fn on_unsupported_by_peer( self, supported: &SharedCapabilities, direction: Direction, peer_id: FixedBytes<64>, ) -> OnNotSupported

Invoked when the RLPx connection has been established by the peer does not share the protocol.

Source

fn into_connection( self, direction: Direction, peer_id: FixedBytes<64>, conn: ProtocolConnection, ) -> Self::Connection

Invoked when the RLPx connection was established and the eth Status handshake succeeded.

Messages arriving before Status completes are queued within Self::inbound_limits and an aggregate handshake budget of 256 KiB or 64 messages, whichever is reached first. The callback runs when the authenticated connection is first polled.

The returned future should resolve when the connection should disconnect.

Provided Methods§

Source

fn inbound_limits(&self) -> ProtocolIngressLimits

Returns local resource limits for inbound messages of this protocol.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§