pub enum P2PEvent {
Message {
topic: String,
source: Option<PeerId>,
transport_source: Option<MultiAddr>,
timestamp: u64,
data: Vec<u8>,
},
PeerConnected(PeerId, String),
PeerDisconnected(PeerId),
}Expand description
Network events that can occur in the P2P system
Events are broadcast to all listeners and provide real-time notifications of network state changes and message arrivals.
Variants§
Message
Message received from a peer on a specific topic
Fields
source: Option<PeerId>For signed messages this is the authenticated app-level PeerId;
None for unsigned messages.
transport_source: Option<MultiAddr>IP transport address that delivered this message, when known.
This is provenance metadata, not an identity signal.
timestamp: u64Sender-supplied Unix timestamp in seconds.
For signed messages this value is covered by the ML-DSA-65 signature alongside the payload, so handlers can use it for application-level freshness or replay defense. Wire-level acceptance no longer gates on this value; subscribers MUST do their own age/dedup checks when the protocol requires them.
PeerConnected(PeerId, String)
An authenticated peer has connected (first signed message verified on any channel).
The user_agent identifies the remote software (e.g. "node/0.12.1", "client/1.0").
PeerDisconnected(PeerId)
An authenticated peer has fully disconnected (all channels closed).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for P2PEvent
impl RefUnwindSafe for P2PEvent
impl Send for P2PEvent
impl Sync for P2PEvent
impl Unpin for P2PEvent
impl UnsafeUnpin for P2PEvent
impl UnwindSafe for P2PEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more