mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-15 11:01:21 +00:00
swarm/: Rename ProtocolsHandler to ConnectionHandler (#2527)
A `ProtocolsHandler`, now `ConnectionHandler`, handels a connection, not a protocol. Thus the name `CONNECTIONHandler` is more appropriate. Next to the rename of `ProtocolsHandler` this commit renames the `mod protocols_handler` to `mod handler`. Finally all combinators (e.g. `ProtocolsHandlerSelect`) are renamed appropriately.
This commit is contained in:
@ -22,7 +22,7 @@ pub mod either;
|
||||
pub mod toggle;
|
||||
|
||||
use crate::dial_opts::DialOpts;
|
||||
use crate::protocols_handler::{IntoProtocolsHandler, ProtocolsHandler};
|
||||
use crate::handler::{ConnectionHandler, IntoConnectionHandler};
|
||||
use crate::{AddressRecord, AddressScore, DialError};
|
||||
use libp2p_core::{
|
||||
connection::{ConnectionId, ListenerId},
|
||||
@ -30,12 +30,12 @@ use libp2p_core::{
|
||||
};
|
||||
use std::{task::Context, task::Poll};
|
||||
|
||||
/// Custom event that can be received by the [`ProtocolsHandler`].
|
||||
/// Custom event that can be received by the [`ConnectionHandler`].
|
||||
pub(crate) type THandlerInEvent<THandler> =
|
||||
<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent;
|
||||
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::InEvent;
|
||||
|
||||
pub(crate) type THandlerOutEvent<THandler> =
|
||||
<<THandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent;
|
||||
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutEvent;
|
||||
|
||||
/// A [`NetworkBehaviour`] defines the behaviour of the local node on the network.
|
||||
///
|
||||
@ -167,12 +167,12 @@ pub(crate) type THandlerOutEvent<THandler> =
|
||||
/// function and will be called last within the generated [`NetworkBehaviour`] implementation.
|
||||
pub trait NetworkBehaviour: Send + 'static {
|
||||
/// Handler for all the protocols the network behaviour supports.
|
||||
type ProtocolsHandler: IntoProtocolsHandler;
|
||||
type ConnectionHandler: IntoConnectionHandler;
|
||||
|
||||
/// Event generated by the `NetworkBehaviour` and that the swarm will report back.
|
||||
type OutEvent: Send + 'static;
|
||||
|
||||
/// Creates a new `ProtocolsHandler` for a connection with a peer.
|
||||
/// Creates a new [`ConnectionHandler`] for a connection with a peer.
|
||||
///
|
||||
/// Every time an incoming connection is opened, and every time another [`NetworkBehaviour`]
|
||||
/// emitted a dial request, this method is called.
|
||||
@ -188,7 +188,7 @@ pub trait NetworkBehaviour: Send + 'static {
|
||||
///
|
||||
/// Note that the handler is returned to the [`NetworkBehaviour`] on connection failure and
|
||||
/// connection closing.
|
||||
fn new_handler(&mut self) -> Self::ProtocolsHandler;
|
||||
fn new_handler(&mut self) -> Self::ConnectionHandler;
|
||||
|
||||
/// Addresses that this behaviour is aware of for this specific peer, and that may allow
|
||||
/// reaching the peer.
|
||||
@ -221,7 +221,7 @@ pub trait NetworkBehaviour: Send + 'static {
|
||||
_: &PeerId,
|
||||
_: &ConnectionId,
|
||||
_: &ConnectedPoint,
|
||||
_: <Self::ProtocolsHandler as IntoProtocolsHandler>::Handler,
|
||||
_: <Self::ConnectionHandler as IntoConnectionHandler>::Handler,
|
||||
_remaining_established: usize,
|
||||
) {
|
||||
}
|
||||
@ -245,14 +245,14 @@ pub trait NetworkBehaviour: Send + 'static {
|
||||
&mut self,
|
||||
peer_id: PeerId,
|
||||
connection: ConnectionId,
|
||||
event: <<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent,
|
||||
event: <<Self::ConnectionHandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutEvent,
|
||||
);
|
||||
|
||||
/// Indicates to the behaviour that the dial to a known or unknown node failed.
|
||||
fn inject_dial_failure(
|
||||
&mut self,
|
||||
_peer_id: Option<PeerId>,
|
||||
_handler: Self::ProtocolsHandler,
|
||||
_handler: Self::ConnectionHandler,
|
||||
_error: &DialError,
|
||||
) {
|
||||
}
|
||||
@ -266,7 +266,7 @@ pub trait NetworkBehaviour: Send + 'static {
|
||||
&mut self,
|
||||
_local_addr: &Multiaddr,
|
||||
_send_back_addr: &Multiaddr,
|
||||
_handler: Self::ProtocolsHandler,
|
||||
_handler: Self::ConnectionHandler,
|
||||
) {
|
||||
}
|
||||
|
||||
@ -301,7 +301,7 @@ pub trait NetworkBehaviour: Send + 'static {
|
||||
&mut self,
|
||||
cx: &mut Context<'_>,
|
||||
params: &mut impl PollParameters,
|
||||
) -> Poll<NetworkBehaviourAction<Self::OutEvent, Self::ProtocolsHandler>>;
|
||||
) -> Poll<NetworkBehaviourAction<Self::OutEvent, Self::ConnectionHandler>>;
|
||||
}
|
||||
|
||||
/// Parameters passed to `poll()`, that the `NetworkBehaviour` has access to.
|
||||
@ -353,7 +353,7 @@ pub trait NetworkBehaviourEventProcess<TEvent> {
|
||||
#[derive(Debug)]
|
||||
pub enum NetworkBehaviourAction<
|
||||
TOutEvent,
|
||||
THandler: IntoProtocolsHandler,
|
||||
THandler: IntoConnectionHandler,
|
||||
TInEvent = THandlerInEvent<THandler>,
|
||||
> {
|
||||
/// Instructs the `Swarm` to return an event when it is being polled.
|
||||
@ -382,9 +382,9 @@ pub enum NetworkBehaviourAction<
|
||||
/// # use libp2p::core::PeerId;
|
||||
/// # use libp2p::plaintext::PlainText2Config;
|
||||
/// # use libp2p::swarm::{
|
||||
/// # DialError, IntoProtocolsHandler, KeepAlive, NegotiatedSubstream,
|
||||
/// # NetworkBehaviour, NetworkBehaviourAction, PollParameters, ProtocolsHandler,
|
||||
/// # ProtocolsHandlerEvent, ProtocolsHandlerUpgrErr, SubstreamProtocol, Swarm, SwarmEvent,
|
||||
/// # DialError, IntoConnectionHandler, KeepAlive, NegotiatedSubstream,
|
||||
/// # NetworkBehaviour, NetworkBehaviourAction, PollParameters, ConnectionHandler,
|
||||
/// # ConnectionHandlerEvent, ConnectionHandlerUpgrErr, SubstreamProtocol, Swarm, SwarmEvent,
|
||||
/// # };
|
||||
/// # use libp2p::swarm::dial_opts::{DialOpts, PeerCondition};
|
||||
/// # use libp2p::yamux;
|
||||
@ -439,10 +439,10 @@ pub enum NetworkBehaviourAction<
|
||||
/// }
|
||||
/// #
|
||||
/// impl NetworkBehaviour for MyBehaviour {
|
||||
/// # type ProtocolsHandler = MyHandler;
|
||||
/// # type ConnectionHandler = MyHandler;
|
||||
/// # type OutEvent = PreciousMessage;
|
||||
/// #
|
||||
/// # fn new_handler(&mut self) -> Self::ProtocolsHandler {
|
||||
/// # fn new_handler(&mut self) -> Self::ConnectionHandler {
|
||||
/// # MyHandler { message: None }
|
||||
/// # }
|
||||
/// #
|
||||
@ -451,7 +451,7 @@ pub enum NetworkBehaviourAction<
|
||||
/// # &mut self,
|
||||
/// # _: PeerId,
|
||||
/// # _: ConnectionId,
|
||||
/// # _: <<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::OutEvent,
|
||||
/// # _: <<Self::ConnectionHandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutEvent,
|
||||
/// # ) {
|
||||
/// # unreachable!();
|
||||
/// # }
|
||||
@ -459,7 +459,7 @@ pub enum NetworkBehaviourAction<
|
||||
/// fn inject_dial_failure(
|
||||
/// &mut self,
|
||||
/// _: Option<PeerId>,
|
||||
/// handler: Self::ProtocolsHandler,
|
||||
/// handler: Self::ConnectionHandler,
|
||||
/// _: &DialError,
|
||||
/// ) {
|
||||
/// // As expected, sending the message failed. But lucky us, we got the handler back, thus
|
||||
@ -473,7 +473,7 @@ pub enum NetworkBehaviourAction<
|
||||
/// # &mut self,
|
||||
/// # _: &mut Context<'_>,
|
||||
/// # _: &mut impl PollParameters,
|
||||
/// # ) -> Poll<NetworkBehaviourAction<Self::OutEvent, Self::ProtocolsHandler>> {
|
||||
/// # ) -> Poll<NetworkBehaviourAction<Self::OutEvent, Self::ConnectionHandler>> {
|
||||
/// # if let Some(action) = self.outbox_to_swarm.pop_front() {
|
||||
/// # return Poll::Ready(action);
|
||||
/// # }
|
||||
@ -485,7 +485,7 @@ pub enum NetworkBehaviourAction<
|
||||
/// # message: Option<PreciousMessage>,
|
||||
/// # }
|
||||
/// #
|
||||
/// # impl ProtocolsHandler for MyHandler {
|
||||
/// # impl ConnectionHandler for MyHandler {
|
||||
/// # type InEvent = Void;
|
||||
/// # type OutEvent = Void;
|
||||
/// # type Error = Void;
|
||||
@ -519,7 +519,7 @@ pub enum NetworkBehaviourAction<
|
||||
/// # fn inject_dial_upgrade_error(
|
||||
/// # &mut self,
|
||||
/// # _: Self::OutboundOpenInfo,
|
||||
/// # _: ProtocolsHandlerUpgrErr<Void>,
|
||||
/// # _: ConnectionHandlerUpgrErr<Void>,
|
||||
/// # ) {
|
||||
/// # }
|
||||
/// #
|
||||
@ -531,7 +531,7 @@ pub enum NetworkBehaviourAction<
|
||||
/// # &mut self,
|
||||
/// # _: &mut Context<'_>,
|
||||
/// # ) -> Poll<
|
||||
/// # ProtocolsHandlerEvent<
|
||||
/// # ConnectionHandlerEvent<
|
||||
/// # Self::OutboundProtocol,
|
||||
/// # Self::OutboundOpenInfo,
|
||||
/// # Self::OutEvent,
|
||||
@ -550,19 +550,19 @@ pub enum NetworkBehaviourAction<
|
||||
/// connection with a peer.
|
||||
///
|
||||
/// If the `Swarm` is connected to the peer, the message is delivered to the
|
||||
/// `ProtocolsHandler` instance identified by the peer ID and connection ID.
|
||||
/// [`ConnectionHandler`] instance identified by the peer ID and connection ID.
|
||||
///
|
||||
/// If the specified connection no longer exists, the event is silently dropped.
|
||||
///
|
||||
/// Typically the connection ID given is the same as the one passed to
|
||||
/// [`NetworkBehaviour::inject_event`], i.e. whenever the behaviour wishes to
|
||||
/// respond to a request on the same connection (and possibly the same
|
||||
/// substream, as per the implementation of `ProtocolsHandler`).
|
||||
/// substream, as per the implementation of [`ConnectionHandler`]).
|
||||
///
|
||||
/// Note that even if the peer is currently connected, connections can get closed
|
||||
/// at any time and thus the event may not reach a handler.
|
||||
NotifyHandler {
|
||||
/// The peer for whom a `ProtocolsHandler` should be notified.
|
||||
/// The peer for whom a [`ConnectionHandler`] should be notified.
|
||||
peer_id: PeerId,
|
||||
/// The options w.r.t. which connection handler to notify of the event.
|
||||
handler: NotifyHandler,
|
||||
@ -591,11 +591,11 @@ pub enum NetworkBehaviourAction<
|
||||
///
|
||||
/// Note: Closing a connection via
|
||||
/// [`NetworkBehaviourAction::CloseConnection`] does not inform the
|
||||
/// corresponding [`ProtocolsHandler`].
|
||||
/// Closing a connection via a [`ProtocolsHandler`] can be done
|
||||
/// either in a collaborative manner across [`ProtocolsHandler`]s
|
||||
/// with [`ProtocolsHandler::connection_keep_alive`] or directly with
|
||||
/// [`ProtocolsHandlerEvent::Close`](crate::ProtocolsHandlerEvent::Close).
|
||||
/// corresponding [`ConnectionHandler`].
|
||||
/// Closing a connection via a [`ConnectionHandler`] can be done
|
||||
/// either in a collaborative manner across [`ConnectionHandler`]s
|
||||
/// with [`ConnectionHandler::connection_keep_alive`] or directly with
|
||||
/// [`ConnectionHandlerEvent::Close`](crate::ConnectionHandlerEvent::Close).
|
||||
CloseConnection {
|
||||
/// The peer to disconnect.
|
||||
peer_id: PeerId,
|
||||
@ -604,7 +604,7 @@ pub enum NetworkBehaviourAction<
|
||||
},
|
||||
}
|
||||
|
||||
impl<TOutEvent, THandler: IntoProtocolsHandler, TInEventOld>
|
||||
impl<TOutEvent, THandler: IntoConnectionHandler, TInEventOld>
|
||||
NetworkBehaviourAction<TOutEvent, THandler, TInEventOld>
|
||||
{
|
||||
/// Map the handler event.
|
||||
@ -640,7 +640,7 @@ impl<TOutEvent, THandler: IntoProtocolsHandler, TInEventOld>
|
||||
}
|
||||
}
|
||||
|
||||
impl<TOutEvent, THandler: IntoProtocolsHandler> NetworkBehaviourAction<TOutEvent, THandler> {
|
||||
impl<TOutEvent, THandler: IntoConnectionHandler> NetworkBehaviourAction<TOutEvent, THandler> {
|
||||
/// Map the event the swarm will return.
|
||||
pub fn map_out<E>(self, f: impl FnOnce(TOutEvent) -> E) -> NetworkBehaviourAction<E, THandler> {
|
||||
match self {
|
||||
@ -673,8 +673,8 @@ impl<TOutEvent, THandler: IntoProtocolsHandler> NetworkBehaviourAction<TOutEvent
|
||||
|
||||
impl<TInEvent, TOutEvent, THandlerOld> NetworkBehaviourAction<TOutEvent, THandlerOld>
|
||||
where
|
||||
THandlerOld: IntoProtocolsHandler,
|
||||
<THandlerOld as IntoProtocolsHandler>::Handler: ProtocolsHandler<InEvent = TInEvent>,
|
||||
THandlerOld: IntoConnectionHandler,
|
||||
<THandlerOld as IntoConnectionHandler>::Handler: ConnectionHandler<InEvent = TInEvent>,
|
||||
{
|
||||
/// Map the handler.
|
||||
pub fn map_handler<THandlerNew>(
|
||||
@ -682,8 +682,8 @@ where
|
||||
f: impl FnOnce(THandlerOld) -> THandlerNew,
|
||||
) -> NetworkBehaviourAction<TOutEvent, THandlerNew>
|
||||
where
|
||||
THandlerNew: IntoProtocolsHandler,
|
||||
<THandlerNew as IntoProtocolsHandler>::Handler: ProtocolsHandler<InEvent = TInEvent>,
|
||||
THandlerNew: IntoConnectionHandler,
|
||||
<THandlerNew as IntoConnectionHandler>::Handler: ConnectionHandler<InEvent = TInEvent>,
|
||||
{
|
||||
match self {
|
||||
NetworkBehaviourAction::GenerateEvent(e) => NetworkBehaviourAction::GenerateEvent(e),
|
||||
@ -716,8 +716,8 @@ where
|
||||
|
||||
impl<TInEventOld, TOutEvent, THandlerOld> NetworkBehaviourAction<TOutEvent, THandlerOld>
|
||||
where
|
||||
THandlerOld: IntoProtocolsHandler,
|
||||
<THandlerOld as IntoProtocolsHandler>::Handler: ProtocolsHandler<InEvent = TInEventOld>,
|
||||
THandlerOld: IntoConnectionHandler,
|
||||
<THandlerOld as IntoConnectionHandler>::Handler: ConnectionHandler<InEvent = TInEventOld>,
|
||||
{
|
||||
/// Map the handler and handler event.
|
||||
pub fn map_handler_and_in<THandlerNew, TInEventNew>(
|
||||
@ -726,8 +726,8 @@ where
|
||||
f_in_event: impl FnOnce(TInEventOld) -> TInEventNew,
|
||||
) -> NetworkBehaviourAction<TOutEvent, THandlerNew>
|
||||
where
|
||||
THandlerNew: IntoProtocolsHandler,
|
||||
<THandlerNew as IntoProtocolsHandler>::Handler: ProtocolsHandler<InEvent = TInEventNew>,
|
||||
THandlerNew: IntoConnectionHandler,
|
||||
<THandlerNew as IntoConnectionHandler>::Handler: ConnectionHandler<InEvent = TInEventNew>,
|
||||
{
|
||||
match self {
|
||||
NetworkBehaviourAction::GenerateEvent(e) => NetworkBehaviourAction::GenerateEvent(e),
|
||||
|
Reference in New Issue
Block a user