Skip to main content

rings_core/dht/
mod.rs

1#![deny(missing_docs)]
2//! Implementation of Ring's DHT
3//! which is based on CHORD, ref: <https://pdos.csail.mit.edu/papers/ton:chord/paper-ton.pdf>
4//! With high probability, the number of nodes that must be contacted to find a successor in an N-node network is O(log N).
5
6mod chord;
7pub mod did;
8/// Storage entry model used by Chord-backed DHT storage.
9pub mod entry;
10/// Finger table for Rings
11pub mod finger;
12mod stabilization;
13mod storage;
14pub mod successor;
15/// Pure Chord topology transition model.
16pub mod topology;
17pub mod types;
18/// Chord-style virtual positions for storage ownership.
19pub mod virtual_node;
20
21pub use chord::EntryStorage;
22pub use chord::PeerRing;
23pub use chord::PeerRingAction;
24pub use chord::RemoteAction as PeerRingRemoteAction;
25pub use chord::TopoInfo;
26pub use did::Did;
27pub use finger::FingerTable;
28pub use finger::DEFAULT_FINGER_TABLE_SIZE;
29#[cfg(all(test, target_family = "wasm"))]
30pub(crate) use stabilization::maintenance_phase_trace_for_test;
31#[cfg(all(test, target_family = "wasm"))]
32pub(crate) use stabilization::reset_maintenance_phase_trace_for_test;
33#[cfg(all(test, target_family = "wasm"))]
34pub(crate) use stabilization::MaintenancePhaseEvent;
35#[cfg(all(test, target_family = "wasm"))]
36pub(crate) use stabilization::MaintenancePhaseKind;
37pub use stabilization::Stabilizer;
38pub use stabilization::StorageRepairOutcome;
39pub(crate) use storage::StorageSyncDelivery;
40pub(crate) use storage::StorageSyncDeliveryCursor;
41pub use storage::StorageSyncDestination;
42pub use storage::StorageSyncPurpose;
43pub use storage::StorageSyncRoute;
44pub use successor::SuccessorReader;
45pub use types::Chord;
46pub use types::ChordStorage;
47pub use types::ChordStorageCache;
48pub use types::ChordStorageRepair;
49pub use types::ChordStorageSync;
50pub use types::CorrectChord;
51pub use types::LiveDid;
52pub use virtual_node::default_storage_virtual_positions_per_owner;
53pub use virtual_node::StorageVirtualNodes;
54pub use virtual_node::VirtualNode;
55pub use virtual_node::VirtualNodeConfig;
56pub use virtual_node::DEFAULT_STORAGE_VIRTUAL_POSITIONS_PER_OWNER;
57pub use virtual_node::MAX_STORAGE_VIRTUAL_POSITIONS_PER_OWNER;
58
59#[cfg(test)]
60pub mod tests {
61    //! test
62    use super::*;
63    use crate::ecc::tests::gen_ordered_keys;
64
65    /// Test get ordered did list
66    pub fn gen_ordered_dids(n: usize) -> Vec<Did> {
67        gen_ordered_keys(n)
68            .iter()
69            .map(|x| x.address().into())
70            .collect()
71    }
72}