[−][src]Trait libp2p_swarm::protocols_handler::ProtocolsHandler
A handler for a set of protocols used on a connection with a remote.
This trait should be implemented for a type that maintains the state for the execution of a specific protocol with a remote.
Handling a protocol
Communication with a remote over a set of protocols is initiated in one of two ways:
-
Dialing by initiating a new outbound substream. In order to do so,
ProtocolsHandler::poll()
must return anProtocolsHandlerEvent::OutboundSubstreamRequest
, providing an instance oflibp2p_core::upgrade::OutboundUpgrade
that is used to negotiate the protocol(s). Upon success,ProtocolsHandler::inject_fully_negotiated_outbound
is called with the final output of the upgrade. -
Listening by accepting a new inbound substream. When a new inbound substream is created on a connection,
ProtocolsHandler::listen_protocol
is called to obtain an instance oflibp2p_core::upgrade::InboundUpgrade
that is used to negotiate the protocol(s). Upon success,ProtocolsHandler::inject_fully_negotiated_inbound
is called with the final output of the upgrade.
Connection Keep-Alive
A ProtocolsHandler
can influence the lifetime of the underlying connection
through ProtocolsHandler::connection_keep_alive
. That is, the protocol
implemented by the handler can include conditions for terminating the connection.
The lifetime of successfully negotiated substreams is fully controlled by the handler.
Implementors of this trait should keep in mind that the connection can be closed at any time. When a connection is closed gracefully, the substreams used by the handler may still continue reading data until the remote closes its side of the connection.
Associated Types
type InEvent: Send + 'static
Custom event that can be received from the outside.
type OutEvent: Send + 'static
Custom event that can be produced by the handler and that will be returned to the outside.
type Error: Error + Send + 'static
The type of errors returned by ProtocolsHandler::poll
.
type InboundProtocol: InboundUpgradeSend + Send + 'static
The inbound upgrade for the protocol(s) used by the handler.
type OutboundProtocol: OutboundUpgradeSend
The outbound upgrade for the protocol(s) used by the handler.
type InboundOpenInfo: Send + 'static
The type of additional information returned from listen_protocol
.
type OutboundOpenInfo: Send + 'static
The type of additional information passed to an OutboundSubstreamRequest
.
Required methods
fn listen_protocol(
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
The InboundUpgrade
to apply on inbound
substreams to negotiate the desired protocols.
Note: The returned
InboundUpgrade
should always accept all the generally supported protocols, even if in a specific context a particular one is not supported, (eg. when only allowing one substream at a time for a protocol). This allows a remote to put the list of supported protocols in a cache.
fn inject_fully_negotiated_inbound(
&mut self,
protocol: <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
&mut self,
protocol: <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
Injects the output of a successful upgrade on a new inbound substream.
fn inject_fully_negotiated_outbound(
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
info: Self::OutboundOpenInfo
)
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
info: Self::OutboundOpenInfo
)
Injects the output of a successful upgrade on a new outbound substream.
The second argument is the information that was previously passed to
ProtocolsHandlerEvent::OutboundSubstreamRequest
.
fn inject_event(&mut self, event: Self::InEvent)
Injects an event coming from the outside in the handler.
fn inject_dial_upgrade_error(
&mut self,
info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
&mut self,
info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
Indicates to the handler that upgrading an outbound substream to the given protocol has failed.
fn connection_keep_alive(&self) -> KeepAlive
Returns until when the connection should be kept alive.
This method is called by the Swarm
after each invocation of
ProtocolsHandler::poll
to determine if the connection and the associated
ProtocolsHandler
s should be kept alive as far as this handler is concerned
and if so, for how long.
Returning KeepAlive::No
indicates that the connection should be
closed and this handler destroyed immediately.
Returning KeepAlive::Until
indicates that the connection may be closed
and this handler destroyed after the specified Instant
.
Returning KeepAlive::Yes
indicates that the connection should
be kept alive until the next call to this method.
Note: The connection is always closed and the handler destroyed when
ProtocolsHandler::poll
returns an error. Furthermore, the connection may be closed for reasons outside of the control of the handler.
fn poll(
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
Should behave like Stream::poll()
.
Provided methods
fn inject_address_change(&mut self, _new_address: &Multiaddr)
Notifies the handler of a change in the address of the remote.
fn inject_listen_upgrade_error(
&mut self,
_: Self::InboundOpenInfo,
_: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
&mut self,
_: Self::InboundOpenInfo,
_: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
Indicates to the handler that upgrading an inbound substream to the given protocol has failed.
fn map_in_event<TNewIn, TMap>(self, map: TMap) -> MapInEvent<Self, TNewIn, TMap> where
Self: Sized,
TMap: Fn(&TNewIn) -> Option<&Self::InEvent>,
Self: Sized,
TMap: Fn(&TNewIn) -> Option<&Self::InEvent>,
Adds a closure that turns the input event into something else.
fn map_out_event<TMap, TNewOut>(self, map: TMap) -> MapOutEvent<Self, TMap> where
Self: Sized,
TMap: FnMut(Self::OutEvent) -> TNewOut,
Self: Sized,
TMap: FnMut(Self::OutEvent) -> TNewOut,
Adds a closure that turns the output event into something else.
fn select<TProto2>(
self,
other: TProto2
) -> ProtocolsHandlerSelect<Self, TProto2> where
Self: Sized,
self,
other: TProto2
) -> ProtocolsHandlerSelect<Self, TProto2> where
Self: Sized,
Creates a new ProtocolsHandler
that selects either this handler or
other
by delegating methods calls appropriately.
Note: The largest
KeepAlive
returned by the two handlers takes precedence, i.e. is returned fromProtocolsHandler::connection_keep_alive
by the returned handler.
fn into_node_handler_builder(self) -> NodeHandlerWrapperBuilder<Self> where
Self: Sized,
Self: Sized,
Creates a builder that allows creating a NodeHandler
that handles this protocol
exclusively.
Note: This method should not be redefined in a custom
ProtocolsHandler
.
Implementors
impl ProtocolsHandler for DummyProtocolsHandler
[src]
type InEvent = Void
type OutEvent = Void
type Error = Void
type InboundProtocol = DeniedUpgrade
type OutboundProtocol = DeniedUpgrade
type OutboundOpenInfo = Void
type InboundOpenInfo = ()
fn listen_protocol(
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
[src]
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
fn inject_fully_negotiated_inbound(
&mut self,
_: <Self::InboundProtocol as InboundUpgrade<NegotiatedSubstream>>::Output,
_: Self::InboundOpenInfo
)
[src]
&mut self,
_: <Self::InboundProtocol as InboundUpgrade<NegotiatedSubstream>>::Output,
_: Self::InboundOpenInfo
)
fn inject_fully_negotiated_outbound(
&mut self,
_: <Self::OutboundProtocol as OutboundUpgrade<NegotiatedSubstream>>::Output,
_: Self::OutboundOpenInfo
)
[src]
&mut self,
_: <Self::OutboundProtocol as OutboundUpgrade<NegotiatedSubstream>>::Output,
_: Self::OutboundOpenInfo
)
fn inject_event(&mut self, _: Self::InEvent)
[src]
fn inject_address_change(&mut self, _: &Multiaddr)
[src]
fn inject_dial_upgrade_error(
&mut self,
_: Self::OutboundOpenInfo,
_: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgrade<NegotiatedSubstream>>::Error>
)
[src]
&mut self,
_: Self::OutboundOpenInfo,
_: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgrade<NegotiatedSubstream>>::Error>
)
fn inject_listen_upgrade_error(
&mut self,
_: Self::InboundOpenInfo,
_: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgrade<NegotiatedSubstream>>::Error>
)
[src]
&mut self,
_: Self::InboundOpenInfo,
_: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgrade<NegotiatedSubstream>>::Error>
)
fn connection_keep_alive(&self) -> KeepAlive
[src]
fn poll(
&mut self,
_: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
[src]
&mut self,
_: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
impl<K, H> ProtocolsHandler for MultiHandler<K, H> where
K: Clone + Hash + Eq + Send + 'static,
H: ProtocolsHandler,
H::InboundProtocol: InboundUpgradeSend,
H::OutboundProtocol: OutboundUpgradeSend,
[src]
K: Clone + Hash + Eq + Send + 'static,
H: ProtocolsHandler,
H::InboundProtocol: InboundUpgradeSend,
H::OutboundProtocol: OutboundUpgradeSend,
type InEvent = (K, <H as ProtocolsHandler>::InEvent)
type OutEvent = (K, <H as ProtocolsHandler>::OutEvent)
type Error = <H as ProtocolsHandler>::Error
type InboundProtocol = Upgrade<K, <H as ProtocolsHandler>::InboundProtocol>
type OutboundProtocol = <H as ProtocolsHandler>::OutboundProtocol
type InboundOpenInfo = Info<K, <H as ProtocolsHandler>::InboundOpenInfo>
type OutboundOpenInfo = (K, <H as ProtocolsHandler>::OutboundOpenInfo)
fn listen_protocol(
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
[src]
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
fn inject_fully_negotiated_outbound(
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
(key, arg): Self::OutboundOpenInfo
)
[src]
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
(key, arg): Self::OutboundOpenInfo
)
fn inject_fully_negotiated_inbound(
&mut self,
(key, arg): <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
[src]
&mut self,
(key, arg): <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
fn inject_event(&mut self, (key, event): Self::InEvent)
[src]
fn inject_address_change(&mut self, addr: &Multiaddr)
[src]
fn inject_dial_upgrade_error(
&mut self,
(key, arg): Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
[src]
&mut self,
(key, arg): Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
fn inject_listen_upgrade_error(
&mut self,
info: Self::InboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
[src]
&mut self,
info: Self::InboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
fn connection_keep_alive(&self) -> KeepAlive
[src]
fn poll(
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
[src]
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
impl<TInbound, TOutbound, TEvent> ProtocolsHandler for OneShotHandler<TInbound, TOutbound, TEvent> where
TInbound: InboundUpgradeSend + Send + 'static,
TOutbound: OutboundUpgradeSend,
TInbound::Output: Into<TEvent>,
TOutbound::Output: Into<TEvent>,
TOutbound::Error: Error + Send + 'static,
SubstreamProtocol<TInbound, ()>: Clone,
TEvent: Send + 'static,
[src]
TInbound: InboundUpgradeSend + Send + 'static,
TOutbound: OutboundUpgradeSend,
TInbound::Output: Into<TEvent>,
TOutbound::Output: Into<TEvent>,
TOutbound::Error: Error + Send + 'static,
SubstreamProtocol<TInbound, ()>: Clone,
TEvent: Send + 'static,
type InEvent = TOutbound
type OutEvent = TEvent
type Error = ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
type InboundProtocol = TInbound
type OutboundProtocol = TOutbound
type OutboundOpenInfo = ()
type InboundOpenInfo = ()
fn listen_protocol(
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
[src]
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
fn inject_fully_negotiated_inbound(
&mut self,
out: <Self::InboundProtocol as InboundUpgradeSend>::Output,
(): Self::InboundOpenInfo
)
[src]
&mut self,
out: <Self::InboundProtocol as InboundUpgradeSend>::Output,
(): Self::InboundOpenInfo
)
fn inject_fully_negotiated_outbound(
&mut self,
out: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
_: Self::OutboundOpenInfo
)
[src]
&mut self,
out: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
_: Self::OutboundOpenInfo
)
fn inject_event(&mut self, event: Self::InEvent)
[src]
fn inject_dial_upgrade_error(
&mut self,
_info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
[src]
&mut self,
_info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
fn connection_keep_alive(&self) -> KeepAlive
[src]
fn poll(
&mut self,
_: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
[src]
&mut self,
_: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
impl<TInner> ProtocolsHandler for ToggleProtoHandler<TInner> where
TInner: ProtocolsHandler,
[src]
TInner: ProtocolsHandler,
type InEvent = TInner::InEvent
type OutEvent = TInner::OutEvent
type Error = TInner::Error
type InboundProtocol = EitherUpgrade<SendWrapper<TInner::InboundProtocol>, SendWrapper<DeniedUpgrade>>
type OutboundProtocol = TInner::OutboundProtocol
type OutboundOpenInfo = TInner::OutboundOpenInfo
type InboundOpenInfo = Either<TInner::InboundOpenInfo, ()>
fn listen_protocol(
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
[src]
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
fn inject_fully_negotiated_inbound(
&mut self,
out: <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
[src]
&mut self,
out: <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
fn inject_fully_negotiated_outbound(
&mut self,
out: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
info: Self::OutboundOpenInfo
)
[src]
&mut self,
out: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
info: Self::OutboundOpenInfo
)
fn inject_event(&mut self, event: Self::InEvent)
[src]
fn inject_address_change(&mut self, addr: &Multiaddr)
[src]
fn inject_dial_upgrade_error(
&mut self,
info: Self::OutboundOpenInfo,
err: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
[src]
&mut self,
info: Self::OutboundOpenInfo,
err: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
fn inject_listen_upgrade_error(
&mut self,
info: Self::InboundOpenInfo,
err: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
[src]
&mut self,
info: Self::InboundOpenInfo,
err: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
fn connection_keep_alive(&self) -> KeepAlive
[src]
fn poll(
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
[src]
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
impl<TProto1, TProto2> ProtocolsHandler for ProtocolsHandlerSelect<TProto1, TProto2> where
TProto1: ProtocolsHandler,
TProto2: ProtocolsHandler,
[src]
TProto1: ProtocolsHandler,
TProto2: ProtocolsHandler,
type InEvent = EitherOutput<TProto1::InEvent, TProto2::InEvent>
type OutEvent = EitherOutput<TProto1::OutEvent, TProto2::OutEvent>
type Error = EitherError<TProto1::Error, TProto2::Error>
type InboundProtocol = SelectUpgrade<SendWrapper<<TProto1 as ProtocolsHandler>::InboundProtocol>, SendWrapper<<TProto2 as ProtocolsHandler>::InboundProtocol>>
type OutboundProtocol = EitherUpgrade<SendWrapper<TProto1::OutboundProtocol>, SendWrapper<TProto2::OutboundProtocol>>
type OutboundOpenInfo = EitherOutput<TProto1::OutboundOpenInfo, TProto2::OutboundOpenInfo>
type InboundOpenInfo = (TProto1::InboundOpenInfo, TProto2::InboundOpenInfo)
fn listen_protocol(
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
[src]
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
fn inject_fully_negotiated_outbound(
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
endpoint: Self::OutboundOpenInfo
)
[src]
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
endpoint: Self::OutboundOpenInfo
)
fn inject_fully_negotiated_inbound(
&mut self,
protocol: <Self::InboundProtocol as InboundUpgradeSend>::Output,
(i1, i2): Self::InboundOpenInfo
)
[src]
&mut self,
protocol: <Self::InboundProtocol as InboundUpgradeSend>::Output,
(i1, i2): Self::InboundOpenInfo
)
fn inject_event(&mut self, event: Self::InEvent)
[src]
fn inject_address_change(&mut self, new_address: &Multiaddr)
[src]
fn inject_dial_upgrade_error(
&mut self,
info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
[src]
&mut self,
info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
fn inject_listen_upgrade_error(
&mut self,
(i1, i2): Self::InboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
[src]
&mut self,
(i1, i2): Self::InboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
fn connection_keep_alive(&self) -> KeepAlive
[src]
fn poll(
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
[src]
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
impl<TProtoHandler, TMap, TNewIn> ProtocolsHandler for MapInEvent<TProtoHandler, TNewIn, TMap> where
TProtoHandler: ProtocolsHandler,
TMap: Fn(TNewIn) -> Option<TProtoHandler::InEvent>,
TNewIn: Send + 'static,
TMap: Send + 'static,
[src]
TProtoHandler: ProtocolsHandler,
TMap: Fn(TNewIn) -> Option<TProtoHandler::InEvent>,
TNewIn: Send + 'static,
TMap: Send + 'static,
type InEvent = TNewIn
type OutEvent = TProtoHandler::OutEvent
type Error = TProtoHandler::Error
type InboundProtocol = TProtoHandler::InboundProtocol
type OutboundProtocol = TProtoHandler::OutboundProtocol
type InboundOpenInfo = TProtoHandler::InboundOpenInfo
type OutboundOpenInfo = TProtoHandler::OutboundOpenInfo
fn listen_protocol(
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
[src]
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
fn inject_fully_negotiated_inbound(
&mut self,
protocol: <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
[src]
&mut self,
protocol: <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
fn inject_fully_negotiated_outbound(
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
info: Self::OutboundOpenInfo
)
[src]
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
info: Self::OutboundOpenInfo
)
fn inject_event(&mut self, event: TNewIn)
[src]
fn inject_address_change(&mut self, addr: &Multiaddr)
[src]
fn inject_dial_upgrade_error(
&mut self,
info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
[src]
&mut self,
info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
fn inject_listen_upgrade_error(
&mut self,
info: Self::InboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
[src]
&mut self,
info: Self::InboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
fn connection_keep_alive(&self) -> KeepAlive
[src]
fn poll(
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
[src]
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
impl<TProtoHandler, TMap, TNewOut> ProtocolsHandler for MapOutEvent<TProtoHandler, TMap> where
TProtoHandler: ProtocolsHandler,
TMap: FnMut(TProtoHandler::OutEvent) -> TNewOut,
TNewOut: Send + 'static,
TMap: Send + 'static,
[src]
TProtoHandler: ProtocolsHandler,
TMap: FnMut(TProtoHandler::OutEvent) -> TNewOut,
TNewOut: Send + 'static,
TMap: Send + 'static,
type InEvent = TProtoHandler::InEvent
type OutEvent = TNewOut
type Error = TProtoHandler::Error
type InboundProtocol = TProtoHandler::InboundProtocol
type OutboundProtocol = TProtoHandler::OutboundProtocol
type InboundOpenInfo = TProtoHandler::InboundOpenInfo
type OutboundOpenInfo = TProtoHandler::OutboundOpenInfo
fn listen_protocol(
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
[src]
&self
) -> SubstreamProtocol<Self::InboundProtocol, Self::InboundOpenInfo>
fn inject_fully_negotiated_inbound(
&mut self,
protocol: <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
[src]
&mut self,
protocol: <Self::InboundProtocol as InboundUpgradeSend>::Output,
info: Self::InboundOpenInfo
)
fn inject_fully_negotiated_outbound(
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
info: Self::OutboundOpenInfo
)
[src]
&mut self,
protocol: <Self::OutboundProtocol as OutboundUpgradeSend>::Output,
info: Self::OutboundOpenInfo
)
fn inject_event(&mut self, event: Self::InEvent)
[src]
fn inject_address_change(&mut self, addr: &Multiaddr)
[src]
fn inject_dial_upgrade_error(
&mut self,
info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
[src]
&mut self,
info: Self::OutboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::OutboundProtocol as OutboundUpgradeSend>::Error>
)
fn inject_listen_upgrade_error(
&mut self,
info: Self::InboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
[src]
&mut self,
info: Self::InboundOpenInfo,
error: ProtocolsHandlerUpgrErr<<Self::InboundProtocol as InboundUpgradeSend>::Error>
)
fn connection_keep_alive(&self) -> KeepAlive
[src]
fn poll(
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>
[src]
&mut self,
cx: &mut Context<'_>
) -> Poll<ProtocolsHandlerEvent<Self::OutboundProtocol, Self::OutboundOpenInfo, Self::OutEvent, Self::Error>>