[−][src]Struct libp2p::ping::protocol::Ping
Represents a prototype for an upgrade to handle the ping protocol.
The protocol works the following way:
- Dialer sends 32 bytes of random data.
- Listener receives the data and sends it back.
- Dialer receives the data and verifies that it matches what it sent.
The dialer produces a Duration
, which corresponds to the round-trip time
of the payload.
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 UpgradeInfo for Ping
[src]
type Info = &'static [u8]
Opaque type representing a negotiable protocol.
type InfoIter = Once<<Ping as UpgradeInfo>::Info>
Iterator returned by protocol_info
.
fn protocol_info(&self) -> <Ping as UpgradeInfo>::InfoIter
[src]
impl<TSocket> InboundUpgrade<TSocket> for Ping where
TSocket: AsyncRead + AsyncWrite,
[src]
TSocket: AsyncRead + AsyncWrite,
type Output = ()
Output after the upgrade has been successfully negotiated and the handshake performed.
type Error = Error
Possible error during the handshake.
type Future = Map<AndThen<AndThen<AndThen<ReadExact<Negotiated<TSocket>, [u8; 32]>, WriteAll<Negotiated<TSocket>, [u8; 32]>, fn((Negotiated<TSocket>, [u8; 32])) -> WriteAll<Negotiated<TSocket>, [u8; 32]>>, Flush<Negotiated<TSocket>>, fn((Negotiated<TSocket>, [u8; 32])) -> Flush<Negotiated<TSocket>>>, Shutdown<Negotiated<TSocket>>, fn(Negotiated<TSocket>) -> Shutdown<Negotiated<TSocket>>>, fn(Negotiated<TSocket>)>
Future that performs the handshake with the remote.
fn upgrade_inbound(
self,
socket: Negotiated<TSocket>,
<Ping as UpgradeInfo>::Info
) -> <Ping as InboundUpgrade<TSocket>>::Future
[src]
self,
socket: Negotiated<TSocket>,
<Ping as UpgradeInfo>::Info
) -> <Ping as InboundUpgrade<TSocket>>::Future
impl Clone for Ping
[src]
fn clone(&self) -> Ping
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Debug for Ping
[src]
impl Copy for Ping
[src]
impl<TSocket> OutboundUpgrade<TSocket> for Ping where
TSocket: AsyncRead + AsyncWrite,
[src]
TSocket: AsyncRead + AsyncWrite,
type Output = Duration
Output after the upgrade has been successfully negotiated and the handshake performed.
type Error = Error
Possible error during the handshake.
type Future = PingDialer<Negotiated<TSocket>>
Future that performs the handshake with the remote.
fn upgrade_outbound(
self,
socket: Negotiated<TSocket>,
<Ping as UpgradeInfo>::Info
) -> <Ping as OutboundUpgrade<TSocket>>::Future
[src]
self,
socket: Negotiated<TSocket>,
<Ping as UpgradeInfo>::Info
) -> <Ping as OutboundUpgrade<TSocket>>::Future
impl Default for Ping
[src]
Auto Trait Implementations
Blanket Implementations
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> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for 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> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> Clear for T where
T: InitializableFromZeroed + ?Sized,
T: InitializableFromZeroed + ?Sized,
fn clear(&mut self)
impl<T> InitializableFromZeroed for T where
T: Default,
T: Default,
unsafe fn initialize(place: *mut T)
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,
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,
[src]
F: FnOnce(Self::Error) -> T,
Returns a new object that wraps around Self
and applies a closure to the Error
.
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,
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,
[src]
F: FnOnce(Self::Error) -> T,
Returns a new object that wraps around Self
and applies a closure to the Error
.