Skip to main content

recon_protocols/
lib.rs

1//! Distributed algorithms, written as sans-IO protocols.
2//!
3//! Each module is one abstraction from Cachin, Guerraoui & Rodrigues, *Introduction to
4//! Reliable and Secure Distributed Programming* — transcribed so that the code can be read
5//! against the page. The pseudocode each one implements is quoted in its module documentation.
6//!
7//! The bottom abstraction, fair-loss links, is not here: it is what the simulator provides.
8
9pub mod best_effort_broadcast;
10pub mod consensus_based_total_order_broadcast;
11pub mod detector;
12pub mod epoch_change;
13pub mod epoch_consensus;
14pub mod eventual_leader_detector;
15pub mod eventually_perfect_failure_detector;
16pub mod fair_loss_link;
17pub mod flooding_consensus;
18pub mod lazy_probabilistic_broadcast;
19pub mod leader_driven_consensus;
20pub mod link;
21pub mod logged_epoch_change;
22pub mod logged_epoch_consensus;
23pub mod logged_leader_driven_consensus;
24pub mod logged_link;
25pub mod logged_uniform_reliable_broadcast;
26pub mod logged_uniform_total_order_broadcast;
27pub mod majority_ack_uniform_reliable_broadcast;
28pub mod multi_paxos_replica;
29pub mod multi_paxos_synod;
30pub mod note;
31pub mod perfect_failure_detector;
32pub mod perfect_link;
33pub mod probabilistic_broadcast;
34pub mod reliable_broadcast;
35pub mod session_link;
36pub mod stacks;
37pub mod stubborn_broadcast;
38pub mod stubborn_link;
39pub mod timing;
40pub mod total_order_log;
41pub mod uniform_reliable_broadcast;
42
43pub use best_effort_broadcast::BestEffortBroadcast;
44pub use consensus_based_total_order_broadcast::ConsensusBasedTotalOrderBroadcast;
45pub use detector::{Detector, DetectorInd};
46pub use eventually_perfect_failure_detector::EventuallyPerfectFailureDetector;
47pub use fair_loss_link::FairLossLink;
48pub use flooding_consensus::FloodingConsensus;
49pub use logged_epoch_change::LoggedEpochChange;
50pub use logged_epoch_consensus::LoggedEpochConsensus;
51pub use logged_leader_driven_consensus::LoggedLeaderDrivenConsensus;
52pub use logged_link::LoggedLink;
53pub use logged_uniform_reliable_broadcast::LoggedUniformReliableBroadcast;
54pub use logged_uniform_total_order_broadcast::LoggedUniformTotalOrderBroadcast;
55pub use majority_ack_uniform_reliable_broadcast::MajorityAckUniformReliableBroadcast;
56pub use multi_paxos_replica::MultiPaxosReplica;
57pub use multi_paxos_synod::MultiPaxosSynod;
58pub use note::{Note, Refusal};
59pub use perfect_failure_detector::PerfectFailureDetector;
60pub use perfect_link::PerfectLink;
61pub use reliable_broadcast::ReliableBroadcast;
62pub use session_link::SessionLink;
63pub use stubborn_broadcast::StubbornBroadcast;
64pub use stubborn_link::StubbornLink;
65pub use timing::Timing;
66pub use total_order_log::{LogInd, TotalOrderLog};
67pub use uniform_reliable_broadcast::UniformReliableBroadcast;