mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-26 08:11:39 +00:00
refactor!: Move ConnectionId
and PendingPoint
to libp2p-swarm
(#3346)
Both of these are only needed as part of `libp2p-swarm`. Them residing in `libp2p-core` is a left-over from when `libp2p-core` still contained `Pool`.
This commit is contained in:
@ -26,12 +26,11 @@ pub mod toggle;
|
||||
pub use external_addresses::ExternalAddresses;
|
||||
pub use listen_addresses::ListenAddresses;
|
||||
|
||||
use crate::connection::ConnectionId;
|
||||
use crate::dial_opts::DialOpts;
|
||||
use crate::handler::{ConnectionHandler, IntoConnectionHandler};
|
||||
use crate::{AddressRecord, AddressScore, DialError};
|
||||
use libp2p_core::{
|
||||
connection::ConnectionId, transport::ListenerId, ConnectedPoint, Multiaddr, PeerId,
|
||||
};
|
||||
use libp2p_core::{transport::ListenerId, ConnectedPoint, Multiaddr, PeerId};
|
||||
use std::{task::Context, task::Poll};
|
||||
|
||||
/// Custom event that can be received by the [`ConnectionHandler`].
|
||||
@ -259,14 +258,14 @@ pub enum NetworkBehaviourAction<
|
||||
/// ```rust
|
||||
/// # use futures::executor::block_on;
|
||||
/// # use futures::stream::StreamExt;
|
||||
/// # use libp2p_core::connection::ConnectionId;
|
||||
/// # use libp2p_core::identity;
|
||||
/// # use libp2p_core::transport::{MemoryTransport, Transport};
|
||||
/// # use libp2p_core::upgrade::{self, DeniedUpgrade, InboundUpgrade, OutboundUpgrade};
|
||||
/// # use libp2p_core::PeerId;
|
||||
/// # use libp2p_plaintext::PlainText2Config;
|
||||
/// # use libp2p_swarm::{
|
||||
/// # FromSwarm, DialFailure, DialError, IntoConnectionHandler, KeepAlive, NegotiatedSubstream,
|
||||
/// # ConnectionId, DialError, IntoConnectionHandler, KeepAlive, NegotiatedSubstream,
|
||||
/// # FromSwarm, DialFailure,
|
||||
/// # NetworkBehaviour, NetworkBehaviourAction, PollParameters, ConnectionHandler,
|
||||
/// # ConnectionHandlerEvent, ConnectionHandlerUpgrErr, SubstreamProtocol, Swarm, SwarmEvent,
|
||||
/// # };
|
||||
|
@ -19,6 +19,7 @@
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
use crate::behaviour::{self, NetworkBehaviour, NetworkBehaviourAction, PollParameters};
|
||||
use crate::connection::ConnectionId;
|
||||
use crate::handler::either::IntoEitherHandler;
|
||||
use either::Either;
|
||||
use libp2p_core::{Multiaddr, PeerId};
|
||||
@ -69,7 +70,7 @@ where
|
||||
fn on_connection_handler_event(
|
||||
&mut self,
|
||||
peer_id: PeerId,
|
||||
connection_id: libp2p_core::connection::ConnectionId,
|
||||
connection_id: ConnectionId,
|
||||
event: crate::THandlerOutEvent<Self>,
|
||||
) {
|
||||
match (self, event) {
|
||||
|
@ -19,6 +19,7 @@
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
use crate::behaviour::FromSwarm;
|
||||
use crate::connection::ConnectionId;
|
||||
use crate::handler::{
|
||||
AddressChange, ConnectionEvent, ConnectionHandler, ConnectionHandlerEvent,
|
||||
ConnectionHandlerUpgrErr, DialUpgradeError, FullyNegotiatedInbound, FullyNegotiatedOutbound,
|
||||
@ -93,7 +94,7 @@ where
|
||||
fn on_connection_handler_event(
|
||||
&mut self,
|
||||
peer_id: PeerId,
|
||||
connection_id: libp2p_core::connection::ConnectionId,
|
||||
connection_id: ConnectionId,
|
||||
event: crate::THandlerOutEvent<Self>,
|
||||
) {
|
||||
if let Some(behaviour) = &mut self.inner {
|
||||
|
@ -42,13 +42,36 @@ use libp2p_core::connection::ConnectedPoint;
|
||||
use libp2p_core::multiaddr::Multiaddr;
|
||||
use libp2p_core::muxing::{StreamMuxerBox, StreamMuxerEvent, StreamMuxerExt, SubstreamBox};
|
||||
use libp2p_core::upgrade::{InboundUpgradeApply, OutboundUpgradeApply};
|
||||
use libp2p_core::PeerId;
|
||||
use libp2p_core::{upgrade, UpgradeError};
|
||||
use libp2p_core::{Endpoint, PeerId};
|
||||
use std::future::Future;
|
||||
use std::task::Waker;
|
||||
use std::time::Duration;
|
||||
use std::{fmt, io, mem, pin::Pin, task::Context, task::Poll};
|
||||
|
||||
/// Connection identifier.
|
||||
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
pub struct ConnectionId(usize);
|
||||
|
||||
impl ConnectionId {
|
||||
/// Creates a `ConnectionId` from a non-negative integer.
|
||||
///
|
||||
/// This is primarily useful for creating connection IDs
|
||||
/// in test environments. There is in general no guarantee
|
||||
/// that all connection IDs are based on non-negative integers.
|
||||
pub fn new(id: usize) -> Self {
|
||||
Self(id)
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::Add<usize> for ConnectionId {
|
||||
type Output = Self;
|
||||
|
||||
fn add(self, other: usize) -> Self {
|
||||
Self(self.0 + other)
|
||||
}
|
||||
}
|
||||
|
||||
/// Information about a successfully established connection.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct Connected {
|
||||
@ -824,3 +847,39 @@ mod tests {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// The endpoint roles associated with a pending peer-to-peer connection.
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
enum PendingPoint {
|
||||
/// The socket comes from a dialer.
|
||||
///
|
||||
/// There is no single address associated with the Dialer of a pending
|
||||
/// connection. Addresses are dialed in parallel. Only once the first dial
|
||||
/// is successful is the address of the connection known.
|
||||
Dialer {
|
||||
/// Same as [`ConnectedPoint::Dialer`] `role_override`.
|
||||
role_override: Endpoint,
|
||||
},
|
||||
/// The socket comes from a listener.
|
||||
Listener {
|
||||
/// Local connection address.
|
||||
local_addr: Multiaddr,
|
||||
/// Address used to send back data to the remote.
|
||||
send_back_addr: Multiaddr,
|
||||
},
|
||||
}
|
||||
|
||||
impl From<ConnectedPoint> for PendingPoint {
|
||||
fn from(endpoint: ConnectedPoint) -> Self {
|
||||
match endpoint {
|
||||
ConnectedPoint::Dialer { role_override, .. } => PendingPoint::Dialer { role_override },
|
||||
ConnectedPoint::Listener {
|
||||
local_addr,
|
||||
send_back_addr,
|
||||
} => PendingPoint::Listener {
|
||||
local_addr,
|
||||
send_back_addr,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
use crate::connection::Connection;
|
||||
use crate::connection::{Connection, ConnectionId, PendingPoint};
|
||||
use crate::{
|
||||
behaviour::{THandlerInEvent, THandlerOutEvent},
|
||||
connection::{
|
||||
@ -39,7 +39,7 @@ use futures::{
|
||||
stream::FuturesUnordered,
|
||||
};
|
||||
use instant::Instant;
|
||||
use libp2p_core::connection::{ConnectionId, Endpoint, PendingPoint};
|
||||
use libp2p_core::connection::Endpoint;
|
||||
use libp2p_core::muxing::{StreamMuxerBox, StreamMuxerExt};
|
||||
use std::{
|
||||
collections::{hash_map, HashMap},
|
||||
|
@ -24,7 +24,8 @@
|
||||
use super::concurrent_dial::ConcurrentDial;
|
||||
use crate::{
|
||||
connection::{
|
||||
self, ConnectionError, PendingInboundConnectionError, PendingOutboundConnectionError,
|
||||
self, ConnectionError, ConnectionId, PendingInboundConnectionError,
|
||||
PendingOutboundConnectionError,
|
||||
},
|
||||
transport::TransportError,
|
||||
ConnectionHandler, Multiaddr, PeerId,
|
||||
@ -34,7 +35,6 @@ use futures::{
|
||||
future::{poll_fn, Either, Future},
|
||||
SinkExt, StreamExt,
|
||||
};
|
||||
use libp2p_core::connection::ConnectionId;
|
||||
use libp2p_core::muxing::StreamMuxerBox;
|
||||
use std::pin::Pin;
|
||||
use void::Void;
|
||||
|
@ -1,9 +1,9 @@
|
||||
use crate::behaviour::{FromSwarm, NetworkBehaviour, NetworkBehaviourAction, PollParameters};
|
||||
use crate::connection::ConnectionId;
|
||||
use crate::handler::{
|
||||
ConnectionEvent, DialUpgradeError, FullyNegotiatedInbound, FullyNegotiatedOutbound,
|
||||
};
|
||||
use crate::{ConnectionHandlerEvent, ConnectionHandlerUpgrErr, KeepAlive, SubstreamProtocol};
|
||||
use libp2p_core::connection::ConnectionId;
|
||||
use libp2p_core::upgrade::DeniedUpgrade;
|
||||
use libp2p_core::PeerId;
|
||||
use libp2p_core::UpgradeError;
|
||||
|
@ -1,9 +1,9 @@
|
||||
use crate::behaviour::{FromSwarm, NetworkBehaviour, NetworkBehaviourAction, PollParameters};
|
||||
use crate::connection::ConnectionId;
|
||||
use crate::handler::{
|
||||
ConnectionEvent, ConnectionHandlerEvent, FullyNegotiatedInbound, FullyNegotiatedOutbound,
|
||||
KeepAlive, SubstreamProtocol,
|
||||
};
|
||||
use libp2p_core::connection::ConnectionId;
|
||||
use libp2p_core::upgrade::DeniedUpgrade;
|
||||
use libp2p_core::PeerId;
|
||||
use std::task::{Context, Poll};
|
||||
|
@ -84,6 +84,7 @@ pub mod derive_prelude {
|
||||
pub use crate::behaviour::NewExternalAddr;
|
||||
pub use crate::behaviour::NewListenAddr;
|
||||
pub use crate::behaviour::NewListener;
|
||||
pub use crate::connection::ConnectionId;
|
||||
pub use crate::ConnectionHandler;
|
||||
pub use crate::DialError;
|
||||
pub use crate::IntoConnectionHandler;
|
||||
@ -92,7 +93,6 @@ pub mod derive_prelude {
|
||||
pub use crate::NetworkBehaviourAction;
|
||||
pub use crate::PollParameters;
|
||||
pub use futures::prelude as futures;
|
||||
pub use libp2p_core::connection::ConnectionId;
|
||||
pub use libp2p_core::either::EitherOutput;
|
||||
pub use libp2p_core::transport::ListenerId;
|
||||
pub use libp2p_core::ConnectedPoint;
|
||||
@ -108,8 +108,8 @@ pub use behaviour::{
|
||||
};
|
||||
pub use connection::pool::{ConnectionCounters, ConnectionLimits};
|
||||
pub use connection::{
|
||||
ConnectionError, ConnectionLimit, PendingConnectionError, PendingInboundConnectionError,
|
||||
PendingOutboundConnectionError,
|
||||
ConnectionError, ConnectionId, ConnectionLimit, PendingConnectionError,
|
||||
PendingInboundConnectionError, PendingOutboundConnectionError,
|
||||
};
|
||||
pub use executor::Executor;
|
||||
pub use handler::{
|
||||
@ -125,7 +125,6 @@ use connection::pool::{EstablishedConnection, Pool, PoolConfig, PoolEvent};
|
||||
use connection::IncomingInfo;
|
||||
use dial_opts::{DialOpts, PeerCondition};
|
||||
use futures::{executor::ThreadPoolBuilder, prelude::*, stream::FusedStream};
|
||||
use libp2p_core::connection::ConnectionId;
|
||||
use libp2p_core::muxing::SubstreamBox;
|
||||
use libp2p_core::{
|
||||
connection::ConnectedPoint,
|
||||
|
@ -23,12 +23,10 @@ use crate::behaviour::{
|
||||
FromSwarm, ListenerClosed, ListenerError, NewExternalAddr, NewListenAddr, NewListener,
|
||||
};
|
||||
use crate::{
|
||||
ConnectionHandler, IntoConnectionHandler, NetworkBehaviour, NetworkBehaviourAction,
|
||||
PollParameters,
|
||||
};
|
||||
use libp2p_core::{
|
||||
connection::ConnectionId, multiaddr::Multiaddr, transport::ListenerId, ConnectedPoint, PeerId,
|
||||
ConnectionHandler, ConnectionId, IntoConnectionHandler, NetworkBehaviour,
|
||||
NetworkBehaviourAction, PollParameters,
|
||||
};
|
||||
use libp2p_core::{multiaddr::Multiaddr, transport::ListenerId, ConnectedPoint, PeerId};
|
||||
use std::collections::HashMap;
|
||||
use std::task::{Context, Poll};
|
||||
|
||||
|
Reference in New Issue
Block a user