|
rippled
|
A single peer in the simulation. More...

Classes | |
| struct | BroadcastMesg |
| class | Position |
| Basic wrapper of a proposed position taken by a peer. More... | |
| struct | ProcessingDelays |
| Simulated delays in internal peer processing. More... | |
| struct | Router |
| class | ValAdaptor |
| Generic Validations adaptor that simply ignores recently stale validations. More... | |
Public Types | |
| using | Ledger_t = Ledger |
| Type definitions for generic consensus. More... | |
| using | NodeID_t = PeerID |
| using | NodeKey_t = PeerKey |
| using | TxSet_t = TxSet |
| using | PeerPosition_t = Position |
| using | Result = ConsensusResult< Peer > |
| using | NodeKey = Validation::NodeKey |
Public Member Functions | |
| Peer (PeerID i, Scheduler &s, LedgerOracle &o, BasicNetwork< Peer * > &n, TrustGraph< Peer * > &tg, CollectorRefs &c, beast::Journal jIn) | |
| Constructor. More... | |
| template<class T > | |
| void | schedule (std::chrono::nanoseconds when, T &&what) |
Schedule the provided callback in when duration, but if when is 0, call immediately. More... | |
| template<class E > | |
| void | issue (E const &event) |
| void | trust (Peer &o) |
| void | untrust (Peer &o) |
| bool | trusts (Peer &o) |
| bool | trusts (PeerID const &oId) |
| bool | connect (Peer &o, SimDuration dur) |
| Create network connection. More... | |
| bool | disconnect (Peer &o) |
| Remove a network connection. More... | |
| Ledger const * | acquireLedger (Ledger::ID const &ledgerID) |
| TxSet const * | acquireTxSet (TxSet::ID const &setId) |
| bool | hasOpenTransactions () const |
| std::size_t | proposersValidated (Ledger::ID const &prevLedger) |
| std::size_t | proposersFinished (Ledger const &prevLedger, Ledger::ID const &prevLedgerID) |
| Result | onClose (Ledger const &prevLedger, NetClock::time_point closeTime, ConsensusMode mode) |
| void | onForceAccept (Result const &result, Ledger const &prevLedger, NetClock::duration const &closeResolution, ConsensusCloseTimes const &rawCloseTimes, ConsensusMode const &mode, Json::Value &&consensusJson) |
| void | onAccept (Result const &result, Ledger const &prevLedger, NetClock::duration const &closeResolution, ConsensusCloseTimes const &rawCloseTimes, ConsensusMode const &mode, Json::Value &&consensusJson) |
| Ledger::Seq | earliestAllowedSeq () const |
| Ledger::ID | getPrevLedger (Ledger::ID const &ledgerID, Ledger const &ledger, ConsensusMode mode) |
| void | propose (Proposal const &pos) |
| ConsensusParms const & | parms () const |
| void | onModeChange (ConsensusMode, ConsensusMode) |
| template<class M > | |
| void | share (M const &m) |
| void | share (Position const &p) |
| bool | addTrustedValidation (Validation v) |
| Add a trusted validation and return true if it is worth forwarding. More... | |
| void | checkFullyValidated (Ledger const &ledger) |
| Check if a new ledger can be deemed fully validated. More... | |
| template<class M > | |
| void | send (BroadcastMesg< M > const &bm, PeerID from) |
| template<class M > | |
| void | receive (BroadcastMesg< M > const &bm, PeerID from) |
| bool | handle (Proposal const &p) |
| bool | handle (TxSet const &txs) |
| bool | handle (Tx const &tx) |
| bool | handle (Validation const &v) |
| bool | haveValidated () const |
| Ledger::Seq | getValidLedgerIndex () const |
| std::pair< std::size_t, hash_set< NodeKey_t > > | getQuorumKeys () |
| std::size_t | laggards (Ledger::Seq const seq, hash_set< NodeKey_t > &trusted) |
| bool | validator () const |
| void | updateOperatingMode (std::size_t const positions) const |
| void | submit (Tx const &tx) |
| void | timerEntry () |
| Heartbeat timer call. More... | |
| void | startRound () |
| void | start () |
| NetClock::time_point | now () const |
| Ledger::ID | prevLedgerID () const |
| TxSet | injectTxs (Ledger prevLedger, TxSet const &src) |
| Inject non-consensus Tx. More... | |
Public Attributes | |
| beast::WrappedSink | sink |
| Logging support that prefixes messages with the peer ID. More... | |
| beast::Journal | j |
| Consensus< Peer > | consensus |
| Generic consensus. More... | |
| PeerID | id |
| Our unique ID. More... | |
| PeerKey | key |
| Current signing key. More... | |
| LedgerOracle & | oracle |
| The oracle that manages unique ledgers. More... | |
| Scheduler & | scheduler |
| Scheduler of events. More... | |
| BasicNetwork< Peer * > & | net |
| Handle to network for sending messages. More... | |
| TrustGraph< Peer * > & | trustGraph |
| Handle to Trust graph of network. More... | |
| TxSetType | openTxs |
| openTxs that haven't been closed in a ledger yet More... | |
| Ledger | lastClosedLedger |
| The last ledger closed by this node. More... | |
| hash_map< Ledger::ID, Ledger > | ledgers |
| Ledgers this node has closed or loaded from the network. More... | |
| Validations< ValAdaptor > | validations |
| Validations from trusted nodes. More... | |
| Ledger | fullyValidatedLedger |
| The most recent ledger that has been fully validated by the network from the perspective of this Peer. More... | |
| bc::flat_map< Ledger::ID, std::vector< Proposal > > | peerPositions |
| Map from Ledger::ID to vector of Positions with that ledger as the prior ledger. More... | |
| bc::flat_map< TxSet::ID, TxSet > | txSets |
| TxSet associated with a TxSet::ID. More... | |
| bc::flat_map< Ledger::ID, SimTime > | acquiringLedgers |
| bc::flat_map< TxSet::ID, SimTime > | acquiringTxSets |
| int | completedLedgers = 0 |
| The number of ledgers this peer has completed. More... | |
| int | targetLedgers = std::numeric_limits<int>::max() |
| The number of ledgers this peer should complete before stopping to run. More... | |
| std::chrono::seconds | clockSkew {0} |
| Skew of time relative to the common scheduler clock. More... | |
| ProcessingDelays | delays |
| Simulated delays to use for internal processing. More... | |
| bool | runAsValidator = true |
| Whether to simulate running as validator or a tracking node. More... | |
| std::size_t | prevProposers = 0 |
| std::chrono::milliseconds | prevRoundTime |
| std::size_t | quorum = 0 |
| hash_set< NodeKey_t > | trustedKeys |
| ConsensusParms | consensusParms |
| CollectorRefs & | collectors |
| The collectors to report events to. More... | |
| Router | router |
| hash_map< Ledger::Seq, Tx > | txInjections |
A single peer in the simulation.
This is the main work-horse of the consensus simulation framework and is where many other components are integrated. The peer
Definition at line 54 of file test/csf/Peer.h.
Type definitions for generic consensus.
Definition at line 157 of file test/csf/Peer.h.
Definition at line 158 of file test/csf/Peer.h.
Definition at line 159 of file test/csf/Peer.h.
Definition at line 160 of file test/csf/Peer.h.
Definition at line 161 of file test/csf/Peer.h.
Definition at line 162 of file test/csf/Peer.h.
Definition at line 163 of file test/csf/Peer.h.
| ripple::test::csf::Peer::Peer | ( | PeerID | i, |
| Scheduler & | s, | ||
| LedgerOracle & | o, | ||
| BasicNetwork< Peer * > & | n, | ||
| TrustGraph< Peer * > & | tg, | ||
| CollectorRefs & | c, | ||
| beast::Journal | jIn | ||
| ) |
Constructor.
| i | Unique PeerID |
| s | Simulation Scheduler |
| o | Simulation Oracle |
| n | Simulation network |
| tg | Simulation trust graph |
| c | Simulation collectors |
| jIn | Simulation journal |
Definition at line 264 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::schedule | ( | std::chrono::nanoseconds | when, |
| T && | what | ||
| ) |
Schedule the provided callback in when duration, but if when is 0, call immediately.
Definition at line 298 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::issue | ( | E const & | event | ) |
Definition at line 311 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::trust | ( | Peer & | o | ) |
Definition at line 324 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::untrust | ( | Peer & | o | ) |
Definition at line 331 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::trusts | ( | Peer & | o | ) |
Definition at line 338 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::trusts | ( | PeerID const & | oId | ) |
Definition at line 345 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::connect | ( | Peer & | o, |
| SimDuration | dur | ||
| ) |
Create network connection.
Creates a new outbound connection to another Peer if none exists
| o | The peer with the inbound connection |
| dur | The fixed delay for messages between the two Peers |
Definition at line 363 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::disconnect | ( | Peer & | o | ) |
Remove a network connection.
Removes a connection between peers if one exists
| o | The peer we disconnect from |
Definition at line 376 of file test/csf/Peer.h.
| Ledger const* ripple::test::csf::Peer::acquireLedger | ( | Ledger::ID const & | ledgerID | ) |
Definition at line 386 of file test/csf/Peer.h.
Definition at line 433 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::hasOpenTransactions | ( | ) | const |
Definition at line 478 of file test/csf/Peer.h.
| std::size_t ripple::test::csf::Peer::proposersValidated | ( | Ledger::ID const & | prevLedger | ) |
Definition at line 484 of file test/csf/Peer.h.
| std::size_t ripple::test::csf::Peer::proposersFinished | ( | Ledger const & | prevLedger, |
| Ledger::ID const & | prevLedgerID | ||
| ) |
Definition at line 490 of file test/csf/Peer.h.
| Result ripple::test::csf::Peer::onClose | ( | Ledger const & | prevLedger, |
| NetClock::time_point | closeTime, | ||
| ConsensusMode | mode | ||
| ) |
Definition at line 496 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::onForceAccept | ( | Result const & | result, |
| Ledger const & | prevLedger, | ||
| NetClock::duration const & | closeResolution, | ||
| ConsensusCloseTimes const & | rawCloseTimes, | ||
| ConsensusMode const & | mode, | ||
| Json::Value && | consensusJson | ||
| ) |
Definition at line 515 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::onAccept | ( | Result const & | result, |
| Ledger const & | prevLedger, | ||
| NetClock::duration const & | closeResolution, | ||
| ConsensusCloseTimes const & | rawCloseTimes, | ||
| ConsensusMode const & | mode, | ||
| Json::Value && | consensusJson | ||
| ) |
Definition at line 533 of file test/csf/Peer.h.
| Ledger::Seq ripple::test::csf::Peer::earliestAllowedSeq | ( | ) | const |
Definition at line 607 of file test/csf/Peer.h.
| Ledger::ID ripple::test::csf::Peer::getPrevLedger | ( | Ledger::ID const & | ledgerID, |
| Ledger const & | ledger, | ||
| ConsensusMode | mode | ||
| ) |
Definition at line 613 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::propose | ( | Proposal const & | pos | ) |
Definition at line 635 of file test/csf/Peer.h.
| ConsensusParms const& ripple::test::csf::Peer::parms | ( | ) | const |
Definition at line 641 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::onModeChange | ( | ConsensusMode | , |
| ConsensusMode | |||
| ) |
Definition at line 647 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::share | ( | M const & | m | ) |
Definition at line 654 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::share | ( | Position const & | p | ) |
Definition at line 662 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::addTrustedValidation | ( | Validation | v | ) |
Add a trusted validation and return true if it is worth forwarding.
Definition at line 672 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::checkFullyValidated | ( | Ledger const & | ledger | ) |
Check if a new ledger can be deemed fully validated.
Definition at line 689 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::send | ( | BroadcastMesg< M > const & | bm, |
| PeerID | from | ||
| ) |
Definition at line 742 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::receive | ( | BroadcastMesg< M > const & | bm, |
| PeerID | from | ||
| ) |
Definition at line 767 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::handle | ( | Proposal const & | p | ) |
Definition at line 783 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::handle | ( | TxSet const & | txs | ) |
Definition at line 802 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::handle | ( | Tx const & | tx | ) |
Definition at line 813 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::handle | ( | Validation const & | v | ) |
Definition at line 825 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::haveValidated | ( | ) | const |
Definition at line 836 of file test/csf/Peer.h.
| Ledger::Seq ripple::test::csf::Peer::getValidLedgerIndex | ( | ) | const |
Definition at line 842 of file test/csf/Peer.h.
| std::pair<std::size_t, hash_set<NodeKey_t> > ripple::test::csf::Peer::getQuorumKeys | ( | ) |
Definition at line 848 of file test/csf/Peer.h.
| std::size_t ripple::test::csf::Peer::laggards | ( | Ledger::Seq const | seq, |
| hash_set< NodeKey_t > & | trusted | ||
| ) |
Definition at line 857 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::validator | ( | ) | const |
Definition at line 863 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::updateOperatingMode | ( | std::size_t const | positions | ) | const |
Definition at line 869 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::submit | ( | Tx const & | tx | ) |
Definition at line 876 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::timerEntry | ( | ) |
Heartbeat timer call.
Definition at line 888 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::startRound | ( | ) |
Definition at line 898 of file test/csf/Peer.h.
| void ripple::test::csf::Peer::start | ( | ) |
Definition at line 919 of file test/csf/Peer.h.
| NetClock::time_point ripple::test::csf::Peer::now | ( | ) | const |
Definition at line 928 of file test/csf/Peer.h.
| Ledger::ID ripple::test::csf::Peer::prevLedgerID | ( | ) | const |
Definition at line 941 of file test/csf/Peer.h.
| beast::WrappedSink ripple::test::csf::Peer::sink |
Logging support that prefixes messages with the peer ID.
Definition at line 166 of file test/csf/Peer.h.
| beast::Journal ripple::test::csf::Peer::j |
Definition at line 167 of file test/csf/Peer.h.
Generic consensus.
Definition at line 170 of file test/csf/Peer.h.
| PeerID ripple::test::csf::Peer::id |
Our unique ID.
Definition at line 173 of file test/csf/Peer.h.
| PeerKey ripple::test::csf::Peer::key |
Current signing key.
Definition at line 176 of file test/csf/Peer.h.
| LedgerOracle& ripple::test::csf::Peer::oracle |
The oracle that manages unique ledgers.
Definition at line 179 of file test/csf/Peer.h.
| Scheduler& ripple::test::csf::Peer::scheduler |
Scheduler of events.
Definition at line 182 of file test/csf/Peer.h.
| BasicNetwork<Peer*>& ripple::test::csf::Peer::net |
Handle to network for sending messages.
Definition at line 185 of file test/csf/Peer.h.
| TrustGraph<Peer*>& ripple::test::csf::Peer::trustGraph |
Handle to Trust graph of network.
Definition at line 188 of file test/csf/Peer.h.
| TxSetType ripple::test::csf::Peer::openTxs |
openTxs that haven't been closed in a ledger yet
Definition at line 191 of file test/csf/Peer.h.
| Ledger ripple::test::csf::Peer::lastClosedLedger |
The last ledger closed by this node.
Definition at line 194 of file test/csf/Peer.h.
| hash_map<Ledger::ID, Ledger> ripple::test::csf::Peer::ledgers |
Ledgers this node has closed or loaded from the network.
Definition at line 197 of file test/csf/Peer.h.
| Validations<ValAdaptor> ripple::test::csf::Peer::validations |
Validations from trusted nodes.
Definition at line 200 of file test/csf/Peer.h.
| Ledger ripple::test::csf::Peer::fullyValidatedLedger |
The most recent ledger that has been fully validated by the network from the perspective of this Peer.
Definition at line 204 of file test/csf/Peer.h.
| bc::flat_map<Ledger::ID, std::vector<Proposal> > ripple::test::csf::Peer::peerPositions |
Map from Ledger::ID to vector of Positions with that ledger as the prior ledger.
Definition at line 212 of file test/csf/Peer.h.
TxSet associated with a TxSet::ID.
Definition at line 214 of file test/csf/Peer.h.
| bc::flat_map<Ledger::ID, SimTime> ripple::test::csf::Peer::acquiringLedgers |
Definition at line 217 of file test/csf/Peer.h.
Definition at line 218 of file test/csf/Peer.h.
| int ripple::test::csf::Peer::completedLedgers = 0 |
The number of ledgers this peer has completed.
Definition at line 221 of file test/csf/Peer.h.
| int ripple::test::csf::Peer::targetLedgers = std::numeric_limits<int>::max() |
The number of ledgers this peer should complete before stopping to run.
Definition at line 224 of file test/csf/Peer.h.
| std::chrono::seconds ripple::test::csf::Peer::clockSkew {0} |
Skew of time relative to the common scheduler clock.
Definition at line 227 of file test/csf/Peer.h.
| ProcessingDelays ripple::test::csf::Peer::delays |
Simulated delays to use for internal processing.
Definition at line 230 of file test/csf/Peer.h.
| bool ripple::test::csf::Peer::runAsValidator = true |
Whether to simulate running as validator or a tracking node.
Definition at line 233 of file test/csf/Peer.h.
| std::size_t ripple::test::csf::Peer::prevProposers = 0 |
Definition at line 237 of file test/csf/Peer.h.
| std::chrono::milliseconds ripple::test::csf::Peer::prevRoundTime |
Definition at line 239 of file test/csf/Peer.h.
| std::size_t ripple::test::csf::Peer::quorum = 0 |
Definition at line 243 of file test/csf/Peer.h.
Definition at line 245 of file test/csf/Peer.h.
| ConsensusParms ripple::test::csf::Peer::consensusParms |
Definition at line 248 of file test/csf/Peer.h.
| CollectorRefs& ripple::test::csf::Peer::collectors |
The collectors to report events to.
Definition at line 251 of file test/csf/Peer.h.
| Router ripple::test::csf::Peer::router |
Definition at line 737 of file test/csf/Peer.h.
| hash_map<Ledger::Seq, Tx> ripple::test::csf::Peer::txInjections |
Definition at line 952 of file test/csf/Peer.h.
1.8.17