pub struct RecentPeers {
pub version: u32,
pub local_npub: String,
pub scope: String,
pub peers: BTreeMap<String, RecentPeer>,
}Expand description
Store-agnostic version-1 recent-peer document.
The serialized object contains exactly version, local_npub, scope,
and peers. Applications choose where and how to persist that JSON.
Fields§
§version: u32§local_npub: String§scope: String§peers: BTreeMap<String, RecentPeer>Implementations§
Source§impl RecentPeers
impl RecentPeers
Sourcepub fn new(
local_npub: impl Into<String>,
scope: impl Into<String>,
) -> Result<Self, RecentPeersError>
pub fn new( local_npub: impl Into<String>, scope: impl Into<String>, ) -> Result<Self, RecentPeersError>
Create an empty version-1 cache for one local identity and app scope.
Sourcepub fn from_json(
json: &str,
expected_local_npub: &str,
expected_scope: &str,
) -> Result<Self, RecentPeersError>
pub fn from_json( json: &str, expected_local_npub: &str, expected_scope: &str, ) -> Result<Self, RecentPeersError>
Strictly decode and validate a cache for the expected identity/scope.
Unknown fields, unknown transports, wrong versions, invalid identities, unsafe endpoints, and documents exceeding the schema limits are rejected. Identity and scope binding prevents one app or local key from accidentally consuming another’s routing memory.
Sourcepub fn to_json(&self) -> Result<String, RecentPeersError>
pub fn to_json(&self) -> Result<String, RecentPeersError>
Validate and encode the canonical compact version-1 JSON document.
Sourcepub fn to_json_pretty(&self) -> Result<String, RecentPeersError>
pub fn to_json_pretty(&self) -> Result<String, RecentPeersError>
Validate and encode an indented version-1 JSON document.
Sourcepub fn local_npub(&self) -> &str
pub fn local_npub(&self) -> &str
Local identity to which this routing cache is bound.
Sourcepub fn validate(&self) -> Result<(), RecentPeersError>
pub fn validate(&self) -> Result<(), RecentPeersError>
Validate all schema invariants without decoding or encoding JSON.
Sourcepub fn observe_authenticated_peer(
&mut self,
peer: &FipsEndpointPeer,
authenticated_at_ms: u64,
) -> Result<bool, RecentPeersError>
pub fn observe_authenticated_peer( &mut self, peer: &FipsEndpointPeer, authenticated_at_ms: u64, ) -> Result<bool, RecentPeersError>
Record one currently authenticated endpoint snapshot.
A connected peer’s identity is retained regardless of transport. Only
FipsEndpointPeer::authenticated_udp_restart_addr can add a restart
endpoint. A disconnected status/retry entry is ignored because it is
not fresh authentication evidence.
Returns true only when the cache contents changed.
Sourcepub fn prune(&mut self, now_ms: u64, ttl_ms: u64)
pub fn prune(&mut self, now_ms: u64, ttl_ms: u64)
Remove identity and endpoint observations older than ttl_ms.
Identity-only records are intentionally retained for the same TTL as routed records. Future timestamps survive clock rollback by using saturating age arithmetic.
Sourcepub fn merge_into_peer_configs(&self, peer_configs: &mut [PeerConfig]) -> usize
pub fn merge_into_peer_configs(&self, peer_configs: &mut [PeerConfig]) -> usize
Merge cached routes into already-authorized peer configurations.
This method cannot create membership: it only mutates entries in the
supplied slice and never calls crate::endpoint::FipsEndpoint::update_peers.
Applications remain responsible for deciding which peers belong in
that slice. Cached addresses use authenticated provenance and preserve
their observation timestamp for retry ranking.
Returns the number of addresses added or refreshed.
Trait Implementations§
Source§impl Clone for RecentPeers
impl Clone for RecentPeers
Source§fn clone(&self) -> RecentPeers
fn clone(&self) -> RecentPeers
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RecentPeers
impl Debug for RecentPeers
Source§impl<'de> Deserialize<'de> for RecentPeers
impl<'de> Deserialize<'de> for RecentPeers
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>,
impl Eq for RecentPeers
Source§impl PartialEq for RecentPeers
impl PartialEq for RecentPeers
Source§impl Serialize for RecentPeers
impl Serialize for RecentPeers
impl StructuralPartialEq for RecentPeers
Auto Trait Implementations§
impl Freeze for RecentPeers
impl RefUnwindSafe for RecentPeers
impl Send for RecentPeers
impl Sync for RecentPeers
impl Unpin for RecentPeers
impl UnsafeUnpin for RecentPeers
impl UnwindSafe for RecentPeers
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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