mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-12 01:21:21 +00:00
feat(swarm): rename associated types for message passing
Previously, the associated types on `NetworkBehaviour` and `ConnectionHandler` carried generic names like `InEvent` and `OutEvent`. These names are _correct_ in that `OutEvent`s are passed out and `InEvent`s are passed in but they don't help users understand how these types are used. In theory, a `ConnectionHandler` could be used separately from `NetworkBehaviour`s but that is highly unlikely. Thus, we rename these associated types to indicate, where the message is going to be sent to: - `NetworkBehaviour::OutEvent` is renamed to `ToSwarm`: It describes the message(s) a `NetworkBehaviour` can emit to the `Swarm`. The user is going to receive those in `SwarmEvent::Behaviour`. - `ConnectionHandler::InEvent` is renamed to `FromBehaviour`: It describes the message(s) a `ConnectionHandler` can receive from its behaviour via `ConnectionHandler::on_swarm_event`. The `NetworkBehaviour` can send it via the `ToSwarm::NotifyHandler` command. - `ConnectionHandler::OutEvent` is renamed to `ToBehaviour`: It describes the message(s) a `ConnectionHandler` can send back to the behaviour via the now also renamed `ConnectionHandlerEvent::NotifyBehaviour` (previously `ConnectionHandlerEvent::Custom`) Resolves: #2854. Pull-Request: #3848.
This commit is contained in:
@ -165,7 +165,7 @@ use std::{
|
||||
pub type NegotiatedSubstream = Stream;
|
||||
|
||||
/// Event generated by the [`NetworkBehaviour`] that the swarm will report back.
|
||||
type TBehaviourOutEvent<TBehaviour> = <TBehaviour as NetworkBehaviour>::OutEvent;
|
||||
type TBehaviourOutEvent<TBehaviour> = <TBehaviour as NetworkBehaviour>::ToSwarm;
|
||||
|
||||
/// [`ConnectionHandler`] of the [`NetworkBehaviour`] for all the protocols the [`NetworkBehaviour`]
|
||||
/// supports.
|
||||
@ -174,10 +174,10 @@ pub type THandler<TBehaviour> = <TBehaviour as NetworkBehaviour>::ConnectionHand
|
||||
|
||||
/// Custom event that can be received by the [`ConnectionHandler`] of the
|
||||
/// [`NetworkBehaviour`].
|
||||
pub type THandlerInEvent<TBehaviour> = <THandler<TBehaviour> as ConnectionHandler>::InEvent;
|
||||
pub type THandlerInEvent<TBehaviour> = <THandler<TBehaviour> as ConnectionHandler>::FromBehaviour;
|
||||
|
||||
/// Custom event that can be produced by the [`ConnectionHandler`] of the [`NetworkBehaviour`].
|
||||
pub type THandlerOutEvent<TBehaviour> = <THandler<TBehaviour> as ConnectionHandler>::OutEvent;
|
||||
pub type THandlerOutEvent<TBehaviour> = <THandler<TBehaviour> as ConnectionHandler>::ToBehaviour;
|
||||
|
||||
/// Custom error that can be produced by the [`ConnectionHandler`] of the [`NetworkBehaviour`].
|
||||
pub type THandlerErr<TBehaviour> = <THandler<TBehaviour> as ConnectionHandler>::Error;
|
||||
@ -743,7 +743,7 @@ where
|
||||
fn handle_pool_event(
|
||||
&mut self,
|
||||
event: PoolEvent<THandler<TBehaviour>>,
|
||||
) -> Option<SwarmEvent<TBehaviour::OutEvent, THandlerErr<TBehaviour>>> {
|
||||
) -> Option<SwarmEvent<TBehaviour::ToSwarm, THandlerErr<TBehaviour>>> {
|
||||
match event {
|
||||
PoolEvent::ConnectionEstablished {
|
||||
peer_id,
|
||||
@ -984,7 +984,7 @@ where
|
||||
<transport::Boxed<(PeerId, StreamMuxerBox)> as Transport>::ListenerUpgrade,
|
||||
io::Error,
|
||||
>,
|
||||
) -> Option<SwarmEvent<TBehaviour::OutEvent, THandlerErr<TBehaviour>>> {
|
||||
) -> Option<SwarmEvent<TBehaviour::ToSwarm, THandlerErr<TBehaviour>>> {
|
||||
match event {
|
||||
TransportEvent::Incoming {
|
||||
listener_id: _,
|
||||
@ -1109,8 +1109,8 @@ where
|
||||
|
||||
fn handle_behaviour_event(
|
||||
&mut self,
|
||||
event: ToSwarm<TBehaviour::OutEvent, THandlerInEvent<TBehaviour>>,
|
||||
) -> Option<SwarmEvent<TBehaviour::OutEvent, THandlerErr<TBehaviour>>> {
|
||||
event: ToSwarm<TBehaviour::ToSwarm, THandlerInEvent<TBehaviour>>,
|
||||
) -> Option<SwarmEvent<TBehaviour::ToSwarm, THandlerErr<TBehaviour>>> {
|
||||
match event {
|
||||
ToSwarm::GenerateEvent(event) => return Some(SwarmEvent::Behaviour(event)),
|
||||
ToSwarm::Dial { opts } => {
|
||||
@ -1194,7 +1194,7 @@ where
|
||||
fn poll_next_event(
|
||||
mut self: Pin<&mut Self>,
|
||||
cx: &mut Context<'_>,
|
||||
) -> Poll<SwarmEvent<TBehaviour::OutEvent, THandlerErr<TBehaviour>>> {
|
||||
) -> Poll<SwarmEvent<TBehaviour::ToSwarm, THandlerErr<TBehaviour>>> {
|
||||
// We use a `this` variable because the compiler can't mutably borrow multiple times
|
||||
// across a `Deref`.
|
||||
let this = &mut *self;
|
||||
@ -1343,8 +1343,8 @@ fn notify_any<THandler, TBehaviour>(
|
||||
where
|
||||
TBehaviour: NetworkBehaviour,
|
||||
THandler: ConnectionHandler<
|
||||
InEvent = THandlerInEvent<TBehaviour>,
|
||||
OutEvent = THandlerOutEvent<TBehaviour>,
|
||||
FromBehaviour = THandlerInEvent<TBehaviour>,
|
||||
ToBehaviour = THandlerOutEvent<TBehaviour>,
|
||||
>,
|
||||
{
|
||||
let mut pending = SmallVec::new();
|
||||
@ -1923,7 +1923,7 @@ mod tests {
|
||||
) -> SwarmBuilder<CallTraceBehaviour<MockBehaviour<T, O>>>
|
||||
where
|
||||
T: ConnectionHandler + Clone,
|
||||
T::OutEvent: Clone,
|
||||
T::ToBehaviour: Clone,
|
||||
O: Send + 'static,
|
||||
{
|
||||
let id_keys = identity::Keypair::generate_ed25519();
|
||||
|
Reference in New Issue
Block a user