mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-28 09:11:34 +00:00
protocols/ping: Properly deprecate types with Ping
prefix (#2937)
Co-authored-by: Elena Frank <elena.frank@protonmail.com> Co-authored-by: João Oliveira <hello@jxs.pt>
This commit is contained in:
@ -56,7 +56,7 @@ pub struct Config {
|
||||
}
|
||||
|
||||
impl Config {
|
||||
/// Creates a new `PingConfig` with the following default settings:
|
||||
/// Creates a new [`Config`] with the following default settings:
|
||||
///
|
||||
/// * [`Config::with_interval`] 15s
|
||||
/// * [`Config::with_timeout`] 20s
|
||||
@ -185,7 +185,7 @@ pub struct Handler {
|
||||
/// Each successful ping resets this counter to 0.
|
||||
failures: u32,
|
||||
/// The outbound ping state.
|
||||
outbound: Option<PingState>,
|
||||
outbound: Option<OutboundState>,
|
||||
/// The inbound pong handler, i.e. if there is an inbound
|
||||
/// substream, this is always a future that waits for the
|
||||
/// next inbound ping to be answered.
|
||||
@ -208,7 +208,7 @@ enum State {
|
||||
}
|
||||
|
||||
impl Handler {
|
||||
/// Builds a new `PingHandler` with the given configuration.
|
||||
/// Builds a new [`Handler`] with the given configuration.
|
||||
pub fn new(config: Config) -> Self {
|
||||
Handler {
|
||||
config,
|
||||
@ -241,7 +241,7 @@ impl ConnectionHandler for Handler {
|
||||
|
||||
fn inject_fully_negotiated_outbound(&mut self, stream: NegotiatedSubstream, (): ()) {
|
||||
self.timer.reset(self.config.timeout);
|
||||
self.outbound = Some(PingState::Ping(protocol::send_ping(stream).boxed()));
|
||||
self.outbound = Some(OutboundState::Ping(protocol::send_ping(stream).boxed()));
|
||||
}
|
||||
|
||||
fn inject_event(&mut self, _: Void) {}
|
||||
@ -330,19 +330,19 @@ impl ConnectionHandler for Handler {
|
||||
|
||||
// Continue outbound pings.
|
||||
match self.outbound.take() {
|
||||
Some(PingState::Ping(mut ping)) => match ping.poll_unpin(cx) {
|
||||
Some(OutboundState::Ping(mut ping)) => match ping.poll_unpin(cx) {
|
||||
Poll::Pending => {
|
||||
if self.timer.poll_unpin(cx).is_ready() {
|
||||
self.pending_errors.push_front(Failure::Timeout);
|
||||
} else {
|
||||
self.outbound = Some(PingState::Ping(ping));
|
||||
self.outbound = Some(OutboundState::Ping(ping));
|
||||
break;
|
||||
}
|
||||
}
|
||||
Poll::Ready(Ok((stream, rtt))) => {
|
||||
self.failures = 0;
|
||||
self.timer.reset(self.config.interval);
|
||||
self.outbound = Some(PingState::Idle(stream));
|
||||
self.outbound = Some(OutboundState::Idle(stream));
|
||||
return Poll::Ready(ConnectionHandlerEvent::Custom(Ok(Success::Ping {
|
||||
rtt,
|
||||
})));
|
||||
@ -352,22 +352,23 @@ impl ConnectionHandler for Handler {
|
||||
.push_front(Failure::Other { error: Box::new(e) });
|
||||
}
|
||||
},
|
||||
Some(PingState::Idle(stream)) => match self.timer.poll_unpin(cx) {
|
||||
Some(OutboundState::Idle(stream)) => match self.timer.poll_unpin(cx) {
|
||||
Poll::Pending => {
|
||||
self.outbound = Some(PingState::Idle(stream));
|
||||
self.outbound = Some(OutboundState::Idle(stream));
|
||||
break;
|
||||
}
|
||||
Poll::Ready(()) => {
|
||||
self.timer.reset(self.config.timeout);
|
||||
self.outbound = Some(PingState::Ping(protocol::send_ping(stream).boxed()));
|
||||
self.outbound =
|
||||
Some(OutboundState::Ping(protocol::send_ping(stream).boxed()));
|
||||
}
|
||||
},
|
||||
Some(PingState::OpenStream) => {
|
||||
self.outbound = Some(PingState::OpenStream);
|
||||
Some(OutboundState::OpenStream) => {
|
||||
self.outbound = Some(OutboundState::OpenStream);
|
||||
break;
|
||||
}
|
||||
None => {
|
||||
self.outbound = Some(PingState::OpenStream);
|
||||
self.outbound = Some(OutboundState::OpenStream);
|
||||
let protocol = SubstreamProtocol::new(ReadyUpgrade::new(PROTOCOL_NAME), ())
|
||||
.with_timeout(self.config.timeout);
|
||||
return Poll::Ready(ConnectionHandlerEvent::OutboundSubstreamRequest {
|
||||
@ -385,7 +386,7 @@ type PingFuture = BoxFuture<'static, Result<(NegotiatedSubstream, Duration), io:
|
||||
type PongFuture = BoxFuture<'static, Result<NegotiatedSubstream, io::Error>>;
|
||||
|
||||
/// The current state w.r.t. outbound pings.
|
||||
enum PingState {
|
||||
enum OutboundState {
|
||||
/// A new substream is being negotiated for the ping protocol.
|
||||
OpenStream,
|
||||
/// The substream is idle, waiting to send the next ping.
|
||||
|
@ -26,16 +26,16 @@
|
||||
//!
|
||||
//! # Usage
|
||||
//!
|
||||
//! The [`Ping`] struct implements the [`NetworkBehaviour`] trait. When used with a [`Swarm`],
|
||||
//! The [`Behaviour`] struct implements the [`NetworkBehaviour`] trait. When used with a [`Swarm`],
|
||||
//! it will respond to inbound ping requests and as necessary periodically send outbound
|
||||
//! ping requests on every established connection. If a configurable number of consecutive
|
||||
//! pings fail, the connection will be closed.
|
||||
//!
|
||||
//! The `Ping` network behaviour produces [`PingEvent`]s, which may be consumed from the `Swarm`
|
||||
//! The [`Behaviour`] network behaviour produces [`Event`]s, which may be consumed from the [`Swarm`]
|
||||
//! by an application, e.g. to collect statistics.
|
||||
//!
|
||||
//! > **Note**: The ping protocol does not keep otherwise idle connections alive
|
||||
//! > by default, see [`PingConfig::with_keep_alive`] for changing this behaviour.
|
||||
//! > by default, see [`Config::with_keep_alive`] for changing this behaviour.
|
||||
//!
|
||||
//! [`Swarm`]: libp2p_swarm::Swarm
|
||||
//! [`Transport`]: libp2p_core::Transport
|
||||
@ -52,16 +52,25 @@ use std::{
|
||||
task::{Context, Poll},
|
||||
};
|
||||
|
||||
#[deprecated(
|
||||
since = "0.30.0",
|
||||
note = "Use re-exports that omit `Ping` prefix, i.e. `libp2p::ping::Config` etc"
|
||||
)]
|
||||
pub use self::{
|
||||
protocol::PROTOCOL_NAME, Config as PingConfig, Event as PingEvent, Failure as PingFailure,
|
||||
Result as PingResult, Success as PingSuccess,
|
||||
};
|
||||
#[deprecated(since = "0.30.0", note = "Use libp2p::ping::Behaviour instead.")]
|
||||
pub use Behaviour as Ping;
|
||||
#[deprecated(since = "0.39.1", note = "Use libp2p::ping::Config instead.")]
|
||||
pub type PingConfig = Config;
|
||||
|
||||
#[deprecated(since = "0.39.1", note = "Use libp2p::ping::Event instead.")]
|
||||
pub type PingEvent = Event;
|
||||
|
||||
#[deprecated(since = "0.39.1", note = "Use libp2p::ping::Success instead.")]
|
||||
pub type PingSuccess = Success;
|
||||
|
||||
#[deprecated(since = "0.39.1", note = "Use libp2p::ping::Failure instead.")]
|
||||
pub type PingFailure = Failure;
|
||||
|
||||
#[deprecated(since = "0.39.1", note = "Use libp2p::ping::Result instead.")]
|
||||
pub type PingResult = Result;
|
||||
|
||||
#[deprecated(since = "0.39.1", note = "Use libp2p::ping::Behaviour instead.")]
|
||||
pub type Ping = Behaviour;
|
||||
|
||||
pub use self::protocol::PROTOCOL_NAME;
|
||||
|
||||
/// The result of an inbound or outbound ping.
|
||||
pub type Result = std::result::Result<Success, Failure>;
|
||||
|
Reference in New Issue
Block a user