rippled
Public Member Functions | Private Attributes | Friends | List of all members
ripple::LedgerReplayer Class Referencefinal

Manages the lifetime of ledger replay tasks. More...

Collaboration diagram for ripple::LedgerReplayer:
Collaboration graph
[legend]

Public Member Functions

 LedgerReplayer (Application &app, InboundLedgers &inboundLedgers, std::unique_ptr< PeerSetBuilder > peerSetBuilder)
 
 ~LedgerReplayer ()
 
void replay (InboundLedger::Reason r, uint256 const &finishLedgerHash, std::uint32_t totalNumLedgers)
 Replay a range of ledgers. More...
 
void createDeltas (std::shared_ptr< LedgerReplayTask > task)
 Create LedgerDeltaAcquire subtasks for the LedgerReplayTask task. More...
 
void gotSkipList (LedgerInfo const &info, boost::intrusive_ptr< SHAMapItem const > const &data)
 Process a skip list (extracted from a TMProofPathResponse message) More...
 
void gotReplayDelta (LedgerInfo const &info, std::map< std::uint32_t, std::shared_ptr< STTx const >> &&txns)
 Process a ledger delta (extracted from a TMReplayDeltaResponse message) More...
 
void sweep ()
 Remove completed tasks. More...
 
void stop ()
 

Private Attributes

std::mutex mtx_
 
std::vector< std::shared_ptr< LedgerReplayTask > > tasks_
 
hash_map< uint256, std::weak_ptr< LedgerDeltaAcquire > > deltas_
 
hash_map< uint256, std::weak_ptr< SkipListAcquire > > skipLists_
 
Applicationapp_
 
InboundLedgersinboundLedgers_
 
std::unique_ptr< PeerSetBuilderpeerSetBuilder_
 
beast::Journal j_
 

Friends

class test::LedgerReplayClient
 

Detailed Description

Manages the lifetime of ledger replay tasks.

Definition at line 72 of file LedgerReplayer.h.

Constructor & Destructor Documentation

◆ LedgerReplayer()

ripple::LedgerReplayer::LedgerReplayer ( Application app,
InboundLedgers inboundLedgers,
std::unique_ptr< PeerSetBuilder peerSetBuilder 
)

Definition at line 27 of file LedgerReplayer.cpp.

◆ ~LedgerReplayer()

ripple::LedgerReplayer::~LedgerReplayer ( )

Definition at line 38 of file LedgerReplayer.cpp.

Member Function Documentation

◆ replay()

void ripple::LedgerReplayer::replay ( InboundLedger::Reason  r,
uint256 const &  finishLedgerHash,
std::uint32_t  totalNumLedgers 
)

Replay a range of ledgers.

Parameters
rreason for the replay request
finishLedgerHashhash of the last ledger
totalNumLedgerstotal number of ledgers in the range, inclusive
Note
totalNumLedgers must > 0 && totalNumLedgers must <= 256

Definition at line 45 of file LedgerReplayer.cpp.

◆ createDeltas()

void ripple::LedgerReplayer::createDeltas ( std::shared_ptr< LedgerReplayTask task)

Create LedgerDeltaAcquire subtasks for the LedgerReplayTask task.

Definition at line 112 of file LedgerReplayer.cpp.

◆ gotSkipList()

void ripple::LedgerReplayer::gotSkipList ( LedgerInfo const &  info,
boost::intrusive_ptr< SHAMapItem const > const &  data 
)

Process a skip list (extracted from a TMProofPathResponse message)

Parameters
infoledger info
dataskip list holder
Note
info and data must have been verified against the ledger hash

Definition at line 173 of file LedgerReplayer.cpp.

◆ gotReplayDelta()

void ripple::LedgerReplayer::gotReplayDelta ( LedgerInfo const &  info,
std::map< std::uint32_t, std::shared_ptr< STTx const >> &&  txns 
)

Process a ledger delta (extracted from a TMReplayDeltaResponse message)

Parameters
infoledger info
txnsset of Txns of the ledger
Note
info and txns must have been verified against the ledger hash

Definition at line 196 of file LedgerReplayer.cpp.

◆ sweep()

void ripple::LedgerReplayer::sweep ( )

Remove completed tasks.

Definition at line 219 of file LedgerReplayer.cpp.

◆ stop()

void ripple::LedgerReplayer::stop ( )

Definition at line 265 of file LedgerReplayer.cpp.

Friends And Related Function Documentation

◆ test::LedgerReplayClient

friend class test::LedgerReplayClient
friend

Definition at line 139 of file LedgerReplayer.h.

Member Data Documentation

◆ mtx_

std::mutex ripple::LedgerReplayer::mtx_
mutableprivate

Definition at line 129 of file LedgerReplayer.h.

◆ tasks_

std::vector<std::shared_ptr<LedgerReplayTask> > ripple::LedgerReplayer::tasks_
private

Definition at line 130 of file LedgerReplayer.h.

◆ deltas_

hash_map<uint256, std::weak_ptr<LedgerDeltaAcquire> > ripple::LedgerReplayer::deltas_
private

Definition at line 131 of file LedgerReplayer.h.

◆ skipLists_

hash_map<uint256, std::weak_ptr<SkipListAcquire> > ripple::LedgerReplayer::skipLists_
private

Definition at line 132 of file LedgerReplayer.h.

◆ app_

Application& ripple::LedgerReplayer::app_
private

Definition at line 134 of file LedgerReplayer.h.

◆ inboundLedgers_

InboundLedgers& ripple::LedgerReplayer::inboundLedgers_
private

Definition at line 135 of file LedgerReplayer.h.

◆ peerSetBuilder_

std::unique_ptr<PeerSetBuilder> ripple::LedgerReplayer::peerSetBuilder_
private

Definition at line 136 of file LedgerReplayer.h.

◆ j_

beast::Journal ripple::LedgerReplayer::j_
private

Definition at line 137 of file LedgerReplayer.h.