pub struct OnlineNodeDescriptor {Show 14 fields
pub did: Did,
pub public_key: VerificationPublicKey,
pub session_public_key: PublicKey<33>,
pub node_type: OnlineNodeType,
pub network_id: u32,
pub storage_redundancy: u16,
pub dht_virtual_nodes: u16,
pub capabilities: Vec<String>,
pub endpoint_hint: Option<String>,
pub started_at_ms: u128,
pub heartbeat_at_ms: u128,
pub expires_at_ms: u128,
pub version: String,
pub signature: MessageVerification,
}Expand description
Signed descriptor published by online nodes.
Fields§
§did: DidDID of the node/account.
public_key: VerificationPublicKeyAccount public key corresponding to did.
session_public_key: PublicKey<33>Session public key used for encrypted onion relay frames.
node_type: OnlineNodeTypeRuntime family of this node.
network_id: u32Network identifier.
storage_redundancy: u16Storage redundancy required by this DHT protocol mode.
dht_virtual_nodes: u16Storage virtual-node positions required by this DHT protocol mode.
capabilities: Vec<String>Optional capability labels.
endpoint_hint: Option<String>Optional endpoint hint, controlled by node policy/configuration.
started_at_ms: u128Process start timestamp in milliseconds since Unix epoch.
heartbeat_at_ms: u128Heartbeat timestamp in milliseconds since Unix epoch.
expires_at_ms: u128Expiry timestamp in milliseconds since Unix epoch.
version: StringNode software version.
signature: MessageVerificationSignature covering every descriptor field above.
Implementations§
Source§impl OnlineNodeDescriptor
impl OnlineNodeDescriptor
Sourcepub fn new_signed(
body: OnlineNodeDescriptorBody,
session_sk: &SessionSk,
) -> Result<Self>
pub fn new_signed( body: OnlineNodeDescriptorBody, session_sk: &SessionSk, ) -> Result<Self>
Create and sign a descriptor.
Sourcepub const fn dht_protocol_mode(&self) -> DhtProtocolMode
pub const fn dht_protocol_mode(&self) -> DhtProtocolMode
Return this descriptor’s DHT protocol mode.
Sourcepub fn matches_dht_protocol(&self, expected: DhtProtocolMode) -> bool
pub fn matches_dht_protocol(&self, expected: DhtProtocolMode) -> bool
Return whether this descriptor belongs to the local DHT protocol mode.
Sourcepub fn verify_signature(&self) -> bool
pub fn verify_signature(&self) -> bool
Verify the descriptor signature and DID/public-key binding.
This does not apply the embedded MessageVerification timestamp/TTL
as a liveness rule. Online-node liveness is defined solely by the
signed expires_at_ms descriptor field; use Self::is_live_at when
expiry should be enforced.
Sourcepub fn is_expired_at(&self, now_ms: u128) -> bool
pub fn is_expired_at(&self, now_ms: u128) -> bool
Returns whether this descriptor is expired at now_ms.
Sourcepub fn is_live_at(&self, now_ms: u128) -> bool
pub fn is_live_at(&self, now_ms: u128) -> bool
Returns whether this descriptor has a valid signature and is not expired.
Sourcepub fn latest_valid_by_did(
descriptors: impl IntoIterator<Item = Self>,
now_ms: u128,
include_expired: bool,
) -> Vec<Self>
pub fn latest_valid_by_did( descriptors: impl IntoIterator<Item = Self>, now_ms: u128, include_expired: bool, ) -> Vec<Self>
Select the newest valid descriptor per DID.
Trait Implementations§
Source§impl Clone for OnlineNodeDescriptor
impl Clone for OnlineNodeDescriptor
Source§fn clone(&self) -> OnlineNodeDescriptor
fn clone(&self) -> OnlineNodeDescriptor
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 OnlineNodeDescriptor
impl Debug for OnlineNodeDescriptor
Source§impl Decoder for OnlineNodeDescriptor
impl Decoder for OnlineNodeDescriptor
Source§impl<'de> Deserialize<'de> for OnlineNodeDescriptor
impl<'de> Deserialize<'de> for OnlineNodeDescriptor
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 Encoder for OnlineNodeDescriptor
impl Encoder for OnlineNodeDescriptor
impl Eq for OnlineNodeDescriptor
Source§impl PartialEq for OnlineNodeDescriptor
impl PartialEq for OnlineNodeDescriptor
Source§impl Serialize for OnlineNodeDescriptor
impl Serialize for OnlineNodeDescriptor
impl StructuralPartialEq for OnlineNodeDescriptor
Auto Trait Implementations§
impl Freeze for OnlineNodeDescriptor
impl RefUnwindSafe for OnlineNodeDescriptor
impl Send for OnlineNodeDescriptor
impl Sync for OnlineNodeDescriptor
impl Unpin for OnlineNodeDescriptor
impl UnsafeUnpin for OnlineNodeDescriptor
impl UnwindSafe for OnlineNodeDescriptor
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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,
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§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.impl<T> ErasedDestructor for Twhere
T: 'static,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for T
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.