[−][src]Struct libp2p_ping::protocol::Ping
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
impl Clone for Ping
[src]
impl Copy for Ping
[src]
impl Debug for Ping
[src]
impl Default for Ping
[src]
impl InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>> for Ping
[src]
type Output = NegotiatedSubstream
Output after the upgrade has been successfully negotiated and the handshake performed.
type Error = Void
Possible error during the handshake.
type Future = Ready<Result<Self::Output, Self::Error>>
Future that performs the handshake with the remote.
fn upgrade_inbound(
self,
stream: NegotiatedSubstream,
_: Self::Info
) -> Self::Future
[src]
self,
stream: NegotiatedSubstream,
_: Self::Info
) -> Self::Future
impl OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>> for Ping
[src]
type Output = NegotiatedSubstream
Output after the upgrade has been successfully negotiated and the handshake performed.
type Error = Void
Possible error during the handshake.
type Future = Ready<Result<Self::Output, Self::Error>>
Future that performs the handshake with the remote.
fn upgrade_outbound(
self,
stream: NegotiatedSubstream,
_: Self::Info
) -> Self::Future
[src]
self,
stream: NegotiatedSubstream,
_: Self::Info
) -> Self::Future
impl UpgradeInfo for Ping
[src]
type Info = &'static [u8]
Opaque type representing a negotiable protocol.
type InfoIter = Once<Self::Info>
Iterator returned by protocol_info
.
fn protocol_info(&self) -> Self::InfoIter
[src]
Auto Trait Implementations
impl RefUnwindSafe for Ping
impl Send for Ping
impl Sync for Ping
impl Unpin for Ping
impl UnwindSafe for Ping
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<C, U> InboundUpgradeExt<C> for U where
U: InboundUpgrade<C>,
[src]
U: InboundUpgrade<C>,
fn map_inbound<F, T>(self, f: F) -> MapInboundUpgrade<Self, F> where
F: FnOnce(Self::Output) -> T,
[src]
F: FnOnce(Self::Output) -> T,
fn map_inbound_err<F, T>(self, f: F) -> MapInboundUpgradeErr<Self, F> where
F: FnOnce(Self::Error) -> T,
[src]
F: FnOnce(Self::Error) -> T,
impl<T, TInfo> InboundUpgradeSend for T where
T: InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>, Info = TInfo> + UpgradeInfoSend<Info = TInfo>,
TInfo: ProtocolName + Clone + Send + 'static,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output: Send,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output: 'static,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error: Send,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error: 'static,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future: Send,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future: 'static,
[src]
T: InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>, Info = TInfo> + UpgradeInfoSend<Info = TInfo>,
TInfo: ProtocolName + Clone + Send + 'static,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output: Send,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output: 'static,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error: Send,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error: 'static,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future: Send,
<T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future: 'static,
type Output = <T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output
Equivalent to InboundUpgrade::Output
.
type Error = <T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error
Equivalent to InboundUpgrade::Error
.
type Future = <T as InboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future
Equivalent to InboundUpgrade::Future
.
fn upgrade_inbound(
self,
socket: Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>,
info: TInfo
) -> <T as InboundUpgradeSend>::Future
[src]
self,
socket: Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>,
info: TInfo
) -> <T as InboundUpgradeSend>::Future
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<C, U> OutboundUpgradeExt<C> for U where
U: OutboundUpgrade<C>,
[src]
U: OutboundUpgrade<C>,
fn map_outbound<F, T>(self, f: F) -> MapOutboundUpgrade<Self, F> where
F: FnOnce(Self::Output) -> T,
[src]
F: FnOnce(Self::Output) -> T,
fn map_outbound_err<F, T>(self, f: F) -> MapOutboundUpgradeErr<Self, F> where
F: FnOnce(Self::Error) -> T,
[src]
F: FnOnce(Self::Error) -> T,
impl<T, TInfo> OutboundUpgradeSend for T where
T: OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>, Info = TInfo> + UpgradeInfoSend<Info = TInfo>,
TInfo: ProtocolName + Clone + Send + 'static,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output: Send,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output: 'static,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error: Send,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error: 'static,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future: Send,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future: 'static,
[src]
T: OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>, Info = TInfo> + UpgradeInfoSend<Info = TInfo>,
TInfo: ProtocolName + Clone + Send + 'static,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output: Send,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output: 'static,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error: Send,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error: 'static,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future: Send,
<T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future: 'static,
type Output = <T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Output
Equivalent to OutboundUpgrade::Output
.
type Error = <T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Error
Equivalent to OutboundUpgrade::Error
.
type Future = <T as OutboundUpgrade<Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>>>::Future
Equivalent to OutboundUpgrade::Future
.
fn upgrade_outbound(
self,
socket: Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>,
info: TInfo
) -> <T as OutboundUpgradeSend>::Future
[src]
self,
socket: Negotiated<SubstreamRef<Arc<StreamMuxerBox>>>,
info: TInfo
) -> <T as OutboundUpgradeSend>::Future
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> UpgradeInfoSend for T where
T: UpgradeInfo + Send + 'static,
<T as UpgradeInfo>::Info: Send,
<T as UpgradeInfo>::Info: 'static,
<<T as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: Send,
<<T as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: 'static,
[src]
T: UpgradeInfo + Send + 'static,
<T as UpgradeInfo>::Info: Send,
<T as UpgradeInfo>::Info: 'static,
<<T as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: Send,
<<T as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter: 'static,
type Info = <T as UpgradeInfo>::Info
Equivalent to UpgradeInfo::Info
.
type InfoIter = <<T as UpgradeInfo>::InfoIter as IntoIterator>::IntoIter
Equivalent to UpgradeInfo::InfoIter
.
fn protocol_info(&self) -> <T as UpgradeInfoSend>::InfoIter
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,