Skip to main content

DhtStateSnapshot

Struct DhtStateSnapshot 

Source
pub struct DhtStateSnapshot {
    pub nodes: Vec<DhtNodeInfo>,
    pub token_secret: [u8; 20],
    pub last_bootstrap_epoch_secs: Option<u64>,
    pub total_nodes: usize,
}
Expand description

Snapshot of DHT (Distributed Hash Table) routing state for persistence.

Captures the current state of DHT nodes, token secret, and bootstrap timing to allow quick resumption without full bootstrap on restart.

§Serialization

This struct implements Serialize/Deserialize for JSON persistence alongside session data. Use to_json_string() and from_json_string() for conversion.

Fields§

§nodes: Vec<DhtNodeInfo>

Known DHT nodes in the routing table

§token_secret: [u8; 20]

Current token secret used for DHT get_peers requests (20 bytes)

§last_bootstrap_epoch_secs: Option<u64>

Unix epoch timestamp of last successful bootstrap, if any

§total_nodes: usize

Total number of nodes in the snapshot (convenience field)

Implementations§

Source§

impl DhtStateSnapshot

Source

pub fn empty() -> Self

Create an empty snapshot (for when DHT is unavailable or not initialized).

Returns a snapshot with no nodes and zeroed token secret, suitable as a default or placeholder value.

Source

pub fn new( nodes: Vec<DhtNodeInfo>, token_secret: [u8; 20], last_bootstrap_epoch_secs: Option<u64>, ) -> Self

Create a snapshot from node data with automatic total_nodes calculation.

§Arguments
  • nodes - Vector of known DHT nodes
  • token_secret - Current 20-byte token secret
  • last_bootstrap - Optional timestamp of last bootstrap
Source

pub fn to_json_string(&self) -> Result<String, String>

Serialize snapshot to JSON string for persistence.

§Returns
  • Ok(String) - JSON-formatted snapshot data
  • Err(String) - Error message if serialization fails
Source

pub fn from_json_string(json: &str) -> Result<Self, String>

Parse snapshot from JSON string.

§Arguments
  • json - JSON string containing serialized snapshot data
§Returns
  • Ok(DhtStateSnapshot) - Deserialized snapshot
  • Err(String) - Error message if parsing fails

Trait Implementations§

Source§

impl Clone for DhtStateSnapshot

Source§

fn clone(&self) -> DhtStateSnapshot

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DhtStateSnapshot

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for DhtStateSnapshot

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for DhtStateSnapshot

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more