pub struct ContactEntry {
pub peer_id: PeerId,
pub addresses: Vec<SocketAddr>,
pub last_seen: DateTime<Utc>,
pub quality_metrics: QualityMetrics,
pub capabilities: Vec<String>,
pub ipv6_identity_verified: bool,
pub reputation_score: f64,
pub connection_history: ConnectionHistory,
pub quic_contact: Option<QuicContactInfo>,
}Expand description
A contact entry representing a known peer
Fields§
§peer_id: PeerIdUnique identifier for this peer
addresses: Vec<SocketAddr>List of socket addresses where this peer can be reached
last_seen: DateTime<Utc>Timestamp when this peer was last seen online
quality_metrics: QualityMetricsQuality metrics for connection performance evaluation
capabilities: Vec<String>List of capabilities supported by this peer
ipv6_identity_verified: boolWhether this peer’s IPv6 identity has been verified
reputation_score: f64Overall reputation score (0.0 to 1.0)
connection_history: ConnectionHistoryHistorical connection data for this peer
quic_contact: Option<QuicContactInfo>QUIC contact data for direct connectivity
Implementations§
Source§impl ContactEntry
impl ContactEntry
Sourcepub fn new(peer_id: PeerId, addresses: Vec<SocketAddr>) -> Self
pub fn new(peer_id: PeerId, addresses: Vec<SocketAddr>) -> Self
Create a new contact entry
Sourcepub fn new_with_quic(
peer_id: PeerId,
addresses: Vec<SocketAddr>,
quic_info: QuicContactInfo,
) -> Self
pub fn new_with_quic( peer_id: PeerId, addresses: Vec<SocketAddr>, quic_info: QuicContactInfo, ) -> Self
Create a new contact entry with QUIC information
Sourcepub fn update_connection_result(
&mut self,
success: bool,
latency_ms: Option<u64>,
error: Option<String>,
)
pub fn update_connection_result( &mut self, success: bool, latency_ms: Option<u64>, error: Option<String>, )
Update quality metrics based on connection result
Sourcepub fn update_success_rate(&mut self)
pub fn update_success_rate(&mut self)
Update success rate
Sourcepub fn recalculate_quality_score(&mut self)
pub fn recalculate_quality_score(&mut self)
Recalculate overall quality score
Sourcepub fn update_capabilities(&mut self, capabilities: Vec<String>)
pub fn update_capabilities(&mut self, capabilities: Vec<String>)
Update capabilities
Sourcepub fn update_reputation(&mut self, reputation: f64)
pub fn update_reputation(&mut self, reputation: f64)
Update reputation score
Sourcepub fn mark_ipv6_verified(&mut self)
pub fn mark_ipv6_verified(&mut self)
Mark IPv6 identity as verified
Sourcepub fn age_seconds(&self) -> u64
pub fn age_seconds(&self) -> u64
Get contact age in seconds
Sourcepub fn has_capability(&self, capability: &str) -> bool
pub fn has_capability(&self, capability: &str) -> bool
Check if contact has essential capabilities
Sourcepub fn update_quic_contact(&mut self, quic_info: QuicContactInfo)
pub fn update_quic_contact(&mut self, quic_info: QuicContactInfo)
Update or set QUIC contact information
Sourcepub fn update_quic_connection_result(
&mut self,
connection_type: QuicConnectionType,
success: bool,
setup_time_ms: Option<u64>,
)
pub fn update_quic_connection_result( &mut self, connection_type: QuicConnectionType, success: bool, setup_time_ms: Option<u64>, )
Update QUIC connection result
Sourcepub fn quic_direct_addresses(&self) -> Option<&Vec<SocketAddr>>
pub fn quic_direct_addresses(&self) -> Option<&Vec<SocketAddr>>
Get QUIC direct addresses if available
Sourcepub fn supports_quic_connection_type(
&self,
connection_type: &QuicConnectionType,
) -> bool
pub fn supports_quic_connection_type( &self, connection_type: &QuicConnectionType, ) -> bool
Check if peer supports specific QUIC connection type
Sourcepub fn quic_quality_score(&self) -> f64
pub fn quic_quality_score(&self) -> f64
Get QUIC quality score (0.0 to 1.0)
Trait Implementations§
Source§impl Clone for ContactEntry
impl Clone for ContactEntry
Source§fn clone(&self) -> ContactEntry
fn clone(&self) -> ContactEntry
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ContactEntry
impl Debug for ContactEntry
Source§impl<'de> Deserialize<'de> for ContactEntry
impl<'de> Deserialize<'de> for ContactEntry
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ContactEntry
impl PartialEq for ContactEntry
Source§impl Serialize for ContactEntry
impl Serialize for ContactEntry
impl StructuralPartialEq for ContactEntry
Auto Trait Implementations§
impl Freeze for ContactEntry
impl RefUnwindSafe for ContactEntry
impl Send for ContactEntry
impl Sync for ContactEntry
impl Unpin for ContactEntry
impl UnwindSafe for ContactEntry
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.