Struct libp2p::ping::protocol::Ping [−][src]
pub struct Ping;
Expand description
The Ping
protocol upgrade.
The ping protocol sends 32 bytes of random data in configurable intervals over a single outbound substream, expecting to receive the same bytes as a response. At the same time, incoming pings on inbound substreams are answered by sending back the received bytes.
At most a single inbound and outbound substream is kept open at any time. In case of a ping timeout or another error on a substream, the substream is dropped. If a configurable number of consecutive outbound pings fail, the connection is closed.
Successful pings report the round-trip time.
Note: The round-trip time of a ping may be subject to delays induced by the underlying transport, e.g. in the case of TCP there is Nagle’s algorithm, delayed acks and similar configuration options which can affect latencies especially on otherwise low-volume connections.
Trait Implementations
type Output = Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>
type Output = Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>
Output after the upgrade has been successfully negotiated and the handshake performed.
type Error = Void
type Error = Void
Possible error during the handshake.
type Future = Ready<Result<<Ping as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output, <Ping as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error>>
type Future = Ready<Result<<Ping as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output, <Ping as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error>>
Future that performs the handshake with the remote.
pub fn upgrade_inbound(
self,
stream: Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>,
<Ping as UpgradeInfo>::Info
) -> <Ping as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future
pub fn upgrade_inbound(
self,
stream: Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>,
<Ping as UpgradeInfo>::Info
) -> <Ping as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future
After we have determined that the remote supports one of the protocols we support, this method is called to start the handshake. Read more
type Output = Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>
type Output = Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>
Output after the upgrade has been successfully negotiated and the handshake performed.
type Error = Void
type Error = Void
Possible error during the handshake.
type Future = Ready<Result<<Ping as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output, <Ping as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error>>
type Future = Ready<Result<<Ping as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output, <Ping as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error>>
Future that performs the handshake with the remote.
pub fn upgrade_outbound(
self,
stream: Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>,
<Ping as UpgradeInfo>::Info
) -> <Ping as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future
pub fn upgrade_outbound(
self,
stream: Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>,
<Ping as UpgradeInfo>::Info
) -> <Ping as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future
After we have determined that the remote supports one of the protocols we support, this method is called to start the handshake. Read more
type Info = &'static [u8]
type Info = &'static [u8]
Opaque type representing a negotiable protocol.
type InfoIter = Once<<Ping as UpgradeInfo>::Info>
type InfoIter = Once<<Ping as UpgradeInfo>::Info>
Iterator returned by protocol_info
.
Returns the list of protocols that are supported. Used during the negotiation process.
Auto Trait Implementations
impl RefUnwindSafe for Ping
impl UnwindSafe for Ping
Blanket Implementations
Mutably borrows from an owned value. Read more
fn map_inbound<F, T>(self, f: F) -> MapInboundUpgrade<Self, F> where
F: FnOnce(Self::Output) -> T,
fn map_inbound<F, T>(self, f: F) -> MapInboundUpgrade<Self, F> where
F: FnOnce(Self::Output) -> T,
Returns a new object that wraps around Self
and applies a closure to the Output
.
fn map_inbound_err<F, T>(self, f: F) -> MapInboundUpgradeErr<Self, F> where
F: FnOnce(Self::Error) -> T,
fn map_inbound_err<F, T>(self, f: F) -> MapInboundUpgradeErr<Self, F> where
F: FnOnce(Self::Error) -> T,
Returns a new object that wraps around Self
and applies a closure to the Error
.
fn map_outbound<F, T>(self, f: F) -> MapOutboundUpgrade<Self, F> where
F: FnOnce(Self::Output) -> T,
fn map_outbound<F, T>(self, f: F) -> MapOutboundUpgrade<Self, F> where
F: FnOnce(Self::Output) -> T,
Returns a new object that wraps around Self
and applies a closure to the Output
.
fn map_outbound_err<F, T>(self, f: F) -> MapOutboundUpgradeErr<Self, F> where
F: FnOnce(Self::Error) -> T,
fn map_outbound_err<F, T>(self, f: F) -> MapOutboundUpgradeErr<Self, F> where
F: FnOnce(Self::Error) -> T,
Returns a new object that wraps around Self
and applies a closure to the Error
.
pub fn vzip(self) -> V