pub struct PeerConnection<T: Transport> { /* private fields */ }Expand description
Relationship with one remote peer, bound to a transport context.
Generic over T: Transport — works with LocalNode (unicast) or
BoundChannel (blind unicast) identically.
Implementations§
Source§impl<T: Transport> PeerConnection<T>
impl<T: Transport> PeerConnection<T>
Source§impl<M: MacBackend> PeerConnection<LocalNode<M>>
impl<M: MacBackend> PeerConnection<LocalNode<M>>
pub fn on_receive<F>(&self, handler: F) -> Subscription
pub fn on_ack_received<F>(&self, handler: F) -> Subscription
pub fn on_ack_timeout<F>(&self, handler: F) -> Subscription
pub fn on_pfs_established<F>(&self, handler: F) -> Subscriptionwhere
F: FnMut() + 'static,
pub fn on_pfs_ended<F>(&self, handler: F) -> Subscriptionwhere
F: FnMut() + 'static,
pub fn on_pong<F>(&self, handler: F) -> Subscription
pub fn on_ping_timeout<F>(&self, handler: F) -> Subscriptionwhere
F: FnMut() + 'static,
Sourcepub async fn ping(
&self,
extra_bytes: usize,
options: &SendOptions,
timeout_ms: u64,
) -> Result<SendProgressTicket, NodeError<M>>
pub async fn ping( &self, extra_bytes: usize, options: &SendOptions, timeout_ms: u64, ) -> Result<SendProgressTicket, NodeError<M>>
Send an echo request and record it as pending until the matching echo
response arrives or timeout_ms elapses.
options is honoured as given, so a ping travels the same way the
traffic it is measuring would: same MIC size, same encryption, same
routing and region options. Only ack_requested is overridden — the
echo response is the acknowledgement, so asking for a MAC ack as
well would put a second frame on the air for nothing.
extra_bytes pads the payload beyond the 2-byte nonce. Padding
matters for the same reason the MIC size does: packet error rate rises
with frame length, so a minimal ping reports a link as usable when a
full-size message would not get through. See PING_MIC_SIZE for the
MIC size callers should normally ask for.
Sourcepub async fn request_identity(
&self,
options: &SendOptions,
) -> Result<SendProgressTicket, NodeError<M>>
pub async fn request_identity( &self, options: &SendOptions, ) -> Result<SendProgressTicket, NodeError<M>>
Solicit this peer’s current identity by sending a targeted MAC Identity Request (command 1). Because the request is a unicast to a specific peer, no filter options are needed — filters exist only to narrow a broadcast solicitation. A random NONCE is included so the peer echoes it in its identity response, matching the responder’s correlation contract.
The response arrives asynchronously as a PayloadType::NodeIdentity
frame on the normal receive path, not as the return value here.
Sourcepub async fn route(&self) -> Option<CachedRoute>
pub async fn route(&self) -> Option<CachedRoute>
The route the MAC has cached for this peer, if any.
Sourcepub async fn clear_route(&self) -> bool
pub async fn clear_route(&self) -> bool
Forget this peer’s cached route, returning whether one was held.
pub async fn request_pfs( &self, duration_minutes: u16, options: &SendOptions, ) -> Result<SendProgressTicket, NodeError<M>>
pub async fn end_pfs(&self, options: &SendOptions) -> Result<(), NodeError<M>>
pub async fn pfs_status(&self) -> Result<PfsStatus, NodeError<M>>
Trait Implementations§
Source§impl<T: Clone + Transport> Clone for PeerConnection<T>
impl<T: Clone + Transport> Clone for PeerConnection<T>
Source§fn clone(&self) -> PeerConnection<T>
fn clone(&self) -> PeerConnection<T>
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<T> Freeze for PeerConnection<T>where
T: Freeze,
impl<T> RefUnwindSafe for PeerConnection<T>where
T: RefUnwindSafe,
impl<T> Send for PeerConnection<T>where
T: Send,
impl<T> Sync for PeerConnection<T>where
T: Sync,
impl<T> Unpin for PeerConnection<T>where
T: Unpin,
impl<T> UnwindSafe for PeerConnection<T>where
T: UnwindSafe,
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)