[−][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 Clone for Ping
[src]
impl Copy for Ping
[src]
impl Debug for Ping
[src]
impl Default for Ping
[src]
impl<TSocket> InboundUpgrade<TSocket> for Ping where
TSocket: AsyncRead + AsyncWrite + Send + Unpin + 'static,
[src]
TSocket: AsyncRead + AsyncWrite + Send + Unpin + 'static,
type Output = ()
Output after the upgrade has been successfully negotiated and the handshake performed.
type Error = Error
Possible error during the handshake.
type Future = Pin<Box<dyn Future<Output = Result<(), Error>> + 'static + Send>>
Future that performs the handshake with the remote.
fn upgrade_inbound(
self,
socket: TSocket,
<Ping as UpgradeInfo>::Info
) -> <Ping as InboundUpgrade<TSocket>>::Future
[src]
self,
socket: TSocket,
<Ping as UpgradeInfo>::Info
) -> <Ping as InboundUpgrade<TSocket>>::Future
impl<TSocket> OutboundUpgrade<TSocket> for Ping where
TSocket: AsyncRead + AsyncWrite + Send + Unpin + 'static,
[src]
TSocket: AsyncRead + AsyncWrite + Send + Unpin + 'static,
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 = Pin<Box<dyn Future<Output = Result<Duration, Error>> + 'static + Send>>
Future that performs the handshake with the remote.
fn upgrade_outbound(
self,
socket: TSocket,
<Ping as UpgradeInfo>::Info
) -> <Ping as OutboundUpgrade<TSocket>>::Future
[src]
self,
socket: TSocket,
<Ping as UpgradeInfo>::Info
) -> <Ping as OutboundUpgrade<TSocket>>::Future
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]
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> Clear for T where
T: InitializableFromZeroed + ?Sized,
T: InitializableFromZeroed + ?Sized,
fn clear(&mut self)
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> InitializableFromZeroed for T where
T: Default,
T: Default,
unsafe fn initialize(place: *mut T)
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>,