TARAXA
taraxa::ProposedBlocks Class Reference

class ProposedBlocks holds proposed pbft blocks together with propose votes hashes per period & round More...

#include <proposed_blocks.hpp>

Public Member Functions

 ProposedBlocks (std::shared_ptr< DbStorage > db)
 
bool pushProposedPbftBlock (const std::shared_ptr< PbftBlock > &proposed_block, const std::shared_ptr< PbftVote > &propose_vote)
 Push proposed PBFT block into the proposed blocks. More...
 
bool pushProposedPbftBlock (const std::shared_ptr< PbftBlock > &proposed_block, bool save_to_db=true)
 Push proposed PBFT block into the proposed blocks. More...
 
void markBlockAsValid (const std::shared_ptr< PbftBlock > &proposed_block)
 Mark block as valid - no need to validate it again. More...
 
std::optional< std::pair< std::shared_ptr< PbftBlock >, bool > > getPbftProposedBlock (PbftPeriod period, const blk_hash_t &block_hash) const
 Get a proposed PBFT block based on specified period and block hash. More...
 
bool isInProposedBlocks (PbftPeriod period, const blk_hash_t &block_hash) const
 Check if specified block is already in proposed blocks. More...
 
void cleanupProposedPbftBlocksByPeriod (PbftPeriod period)
 Cleanup all proposed PBFT blocks for the finalized period. More...
 
std::optional< std::string > checkOldBlocksPresence (PbftPeriod current_period) const
 Check if there are any old proposed blocks that were supposed to be deleted. More...
 

Private Attributes

std::map< PbftPeriod, std::unordered_map< blk_hash_t, std::pair< std::shared_ptr< PbftBlock >, bool > > > proposed_blocks_
 
std::shared_mutex proposed_blocks_mutex_
 
std::shared_ptr< DbStoragedb_
 

Detailed Description

class ProposedBlocks holds proposed pbft blocks together with propose votes hashes per period & round

Constructor & Destructor Documentation

◆ ProposedBlocks()

taraxa::ProposedBlocks::ProposedBlocks ( std::shared_ptr< DbStorage db)
inline

Member Function Documentation

◆ checkOldBlocksPresence()

std::optional< std::string > taraxa::ProposedBlocks::checkOldBlocksPresence ( PbftPeriod  current_period) const

Check if there are any old proposed blocks that were supposed to be deleted.

Parameters
current_period
Returns
err msg in case there are some old blocks, otherwise empty optional

◆ cleanupProposedPbftBlocksByPeriod()

void taraxa::ProposedBlocks::cleanupProposedPbftBlocksByPeriod ( PbftPeriod  period)

Cleanup all proposed PBFT blocks for the finalized period.

Parameters
period

◆ getPbftProposedBlock()

std::optional< std::pair< std::shared_ptr< PbftBlock >, bool > > taraxa::ProposedBlocks::getPbftProposedBlock ( PbftPeriod  period,
const blk_hash_t block_hash 
) const

Get a proposed PBFT block based on specified period and block hash.

Parameters
period
block_hash
Returns
optional<pair<block, is_valid flag>>

◆ isInProposedBlocks()

bool taraxa::ProposedBlocks::isInProposedBlocks ( PbftPeriod  period,
const blk_hash_t block_hash 
) const

Check if specified block is already in proposed blocks.

Parameters
period
block_hash
Returns
true if block is present, otherwise false

◆ markBlockAsValid()

void taraxa::ProposedBlocks::markBlockAsValid ( const std::shared_ptr< PbftBlock > &  proposed_block)

Mark block as valid - no need to validate it again.

Parameters
proposed_block

◆ pushProposedPbftBlock() [1/2]

bool taraxa::ProposedBlocks::pushProposedPbftBlock ( const std::shared_ptr< PbftBlock > &  proposed_block,
bool  save_to_db = true 
)

Push proposed PBFT block into the proposed blocks.

Parameters
proposed_block
save_to_dbif true save to db
Returns
true if block was successfully pushed, otherwise false

◆ pushProposedPbftBlock() [2/2]

bool taraxa::ProposedBlocks::pushProposedPbftBlock ( const std::shared_ptr< PbftBlock > &  proposed_block,
const std::shared_ptr< PbftVote > &  propose_vote 
)

Push proposed PBFT block into the proposed blocks.

Parameters
proposed_blockproposed PBFT block
propose_votepropose PBFT vote
Returns
true if block was successfully pushed, otherwise false

Member Data Documentation

◆ db_

std::shared_ptr<DbStorage> taraxa::ProposedBlocks::db_
private

◆ proposed_blocks_

std::map<PbftPeriod, std::unordered_map<blk_hash_t, std::pair<std::shared_ptr<PbftBlock>, bool> > > taraxa::ProposedBlocks::proposed_blocks_
private

◆ proposed_blocks_mutex_

std::shared_mutex taraxa::ProposedBlocks::proposed_blocks_mutex_
mutableprivate

The documentation for this class was generated from the following files: