TARAXA
taraxa::network::tarcap::TaraxaPeer Class Reference

#include <taraxa_peer.hpp>

Collaboration diagram for taraxa::network::tarcap::TaraxaPeer:

Public Member Functions

 TaraxaPeer ()
 
 TaraxaPeer (const dev::p2p::NodeID &id, size_t transaction_pool_size, std::string address)
 
bool markDagBlockAsKnown (const blk_hash_t &hash)
 Mark dag block as known. More...
 
bool isDagBlockKnown (const blk_hash_t &hash) const
 
bool markTransactionAsKnown (const trx_hash_t &hash)
 Mark transaction as known. More...
 
bool isTransactionKnown (const trx_hash_t &hash) const
 
bool markPbftVoteAsKnown (const vote_hash_t &hash)
 Mark pbft vote as known. More...
 
bool isPbftVoteKnown (const vote_hash_t &hash) const
 
bool markPbftBlockAsKnown (const blk_hash_t &hash)
 Mark pbft block as known. More...
 
bool isPbftBlockKnown (const blk_hash_t &hash) const
 
bool markPillarVoteAsKnown (const vote_hash_t &hash)
 Mark pillar block vote as known. More...
 
bool isPillarVoteKnown (const vote_hash_t &hash) const
 
const dev::p2p::NodeIDgetId () const
 
bool reportSuspiciousPacket ()
 Reports suspicious pacet. More...
 
bool dagSyncingAllowed () const
 Check if it is allowed to send dag syncing request. More...
 
bool requestDagSyncingAllowed () const
 Check if it is allowed to receive dag syncing request. More...
 
void addSentPacket (const std::string &packet_type, const PacketStats &packet)
 Adds packet to the stats. More...
 
std::pair< std::chrono::system_clock::time_point, PacketStatsgetAllPacketsStatsCopy () const
 
void resetPacketsStats ()
 Resets sent packets stats. More...
 
void resetKnownCaches ()
 Resets known caches - used for testing. More...
 

Public Attributes

std::atomic< bool > syncing_ = false
 
std::atomic< uint64_t > dag_level_ = 0
 
std::atomic< PbftPeriodpbft_chain_size_ = 0
 
std::atomic< PbftPeriodpbft_period_ = pbft_chain_size_ = 1
 
std::atomic< PbftRoundpbft_round_ = 1
 
std::atomic< PbftPeriodlast_status_pbft_chain_size_ = 0
 
std::atomic_bool peer_dag_synced_ = false
 
std::atomic_uint64_t peer_dag_synced_time_ = 0
 
std::atomic_bool peer_dag_syncing_ = false
 
std::atomic_bool peer_requested_dag_syncing_ = false
 
std::atomic_uint64_t peer_requested_dag_syncing_time_ = 0
 
std::atomic_bool peer_light_node = false
 
std::atomic< PbftPeriodpeer_light_node_history = 0
 
std::string address_
 
boost::shared_mutex mutex_for_sending_dag_blocks_
 

Private Attributes

dev::p2p::NodeID id_
 
ExpirationBlockNumberCache< blk_hash_tknown_dag_blocks_
 
ExpirationBlockNumberCache< trx_hash_tknown_transactions_
 
ExpirationBlockNumberCache< blk_hash_tknown_pbft_blocks_
 
ExpirationBlockNumberCache< vote_hash_tknown_votes_
 
std::atomic< uint64_t > timestamp_suspicious_packet_ = 0
 
std::atomic< uint64_t > suspicious_packet_count_ = 0
 
const uint64_t kMaxSuspiciousPacketPerMinute = 50000
 
const uint64_t kDagSyncingLimit = 60
 
PacketsStats sent_packets_stats_
 

Constructor & Destructor Documentation

◆ TaraxaPeer() [1/2]

taraxa::network::tarcap::TaraxaPeer::TaraxaPeer ( )

◆ TaraxaPeer() [2/2]

taraxa::network::tarcap::TaraxaPeer::TaraxaPeer ( const dev::p2p::NodeID id,
size_t  transaction_pool_size,
std::string  address 
)

Member Function Documentation

◆ addSentPacket()

void taraxa::network::tarcap::TaraxaPeer::addSentPacket ( const std::string &  packet_type,
const PacketStats packet 
)

Adds packet to the stats.

Parameters
packet_type
packet

◆ dagSyncingAllowed()

bool taraxa::network::tarcap::TaraxaPeer::dagSyncingAllowed ( ) const

Check if it is allowed to send dag syncing request.

Returns
true if allowed

◆ getAllPacketsStatsCopy()

std::pair< std::chrono::system_clock::time_point, PacketStats > taraxa::network::tarcap::TaraxaPeer::getAllPacketsStatsCopy ( ) const
Returns
AllPacketsStats - packets stats for packets received from peer

◆ getId()

const dev::p2p::NodeID & taraxa::network::tarcap::TaraxaPeer::getId ( ) const

◆ isDagBlockKnown()

bool taraxa::network::tarcap::TaraxaPeer::isDagBlockKnown ( const blk_hash_t hash) const

◆ isPbftBlockKnown()

bool taraxa::network::tarcap::TaraxaPeer::isPbftBlockKnown ( const blk_hash_t hash) const

◆ isPbftVoteKnown()

bool taraxa::network::tarcap::TaraxaPeer::isPbftVoteKnown ( const vote_hash_t hash) const

◆ isPillarVoteKnown()

bool taraxa::network::tarcap::TaraxaPeer::isPillarVoteKnown ( const vote_hash_t hash) const

◆ isTransactionKnown()

bool taraxa::network::tarcap::TaraxaPeer::isTransactionKnown ( const trx_hash_t hash) const

◆ markDagBlockAsKnown()

bool taraxa::network::tarcap::TaraxaPeer::markDagBlockAsKnown ( const blk_hash_t hash)

Mark dag block as known.

Parameters
_hash
Returns
true in case dag block was actually marked as known(was not known before), otherwise false (was already known)

◆ markPbftBlockAsKnown()

bool taraxa::network::tarcap::TaraxaPeer::markPbftBlockAsKnown ( const blk_hash_t hash)

Mark pbft block as known.

Parameters
_hash
Returns
true in case pbft block was actually marked as known(was not known before), otherwise false (was already known)

◆ markPbftVoteAsKnown()

bool taraxa::network::tarcap::TaraxaPeer::markPbftVoteAsKnown ( const vote_hash_t hash)

Mark pbft vote as known.

Parameters
_hash
Returns
true in case vote was actually marked as known(was not known before), otherwise false (was already known)

◆ markPillarVoteAsKnown()

bool taraxa::network::tarcap::TaraxaPeer::markPillarVoteAsKnown ( const vote_hash_t hash)

Mark pillar block vote as known.

Parameters
_hash
Returns
true in case pillar vote was actually marked as known(was not known before), otherwise false (was already known)

◆ markTransactionAsKnown()

bool taraxa::network::tarcap::TaraxaPeer::markTransactionAsKnown ( const trx_hash_t hash)

Mark transaction as known.

Parameters
_hash
Returns
true in case transaction was actually marked as known(was not known before), otherwise false (was already known)

◆ reportSuspiciousPacket()

bool taraxa::network::tarcap::TaraxaPeer::reportSuspiciousPacket ( )

Reports suspicious pacet.

Returns
true in case suspicious packet count within current minute is greater than kMaxSuspiciousPacketPerMinute

◆ requestDagSyncingAllowed()

bool taraxa::network::tarcap::TaraxaPeer::requestDagSyncingAllowed ( ) const

Check if it is allowed to receive dag syncing request.

Returns
true if allowed

◆ resetKnownCaches()

void taraxa::network::tarcap::TaraxaPeer::resetKnownCaches ( )

Resets known caches - used for testing.

◆ resetPacketsStats()

void taraxa::network::tarcap::TaraxaPeer::resetPacketsStats ( )

Resets sent packets stats.

Member Data Documentation

◆ address_

std::string taraxa::network::tarcap::TaraxaPeer::address_

◆ dag_level_

std::atomic<uint64_t> taraxa::network::tarcap::TaraxaPeer::dag_level_ = 0

◆ id_

dev::p2p::NodeID taraxa::network::tarcap::TaraxaPeer::id_
private

◆ kDagSyncingLimit

const uint64_t taraxa::network::tarcap::TaraxaPeer::kDagSyncingLimit = 60
private

◆ kMaxSuspiciousPacketPerMinute

const uint64_t taraxa::network::tarcap::TaraxaPeer::kMaxSuspiciousPacketPerMinute = 50000
private

◆ known_dag_blocks_

ExpirationBlockNumberCache<blk_hash_t> taraxa::network::tarcap::TaraxaPeer::known_dag_blocks_
private

◆ known_pbft_blocks_

ExpirationBlockNumberCache<blk_hash_t> taraxa::network::tarcap::TaraxaPeer::known_pbft_blocks_
private

◆ known_transactions_

ExpirationBlockNumberCache<trx_hash_t> taraxa::network::tarcap::TaraxaPeer::known_transactions_
private

◆ known_votes_

ExpirationBlockNumberCache<vote_hash_t> taraxa::network::tarcap::TaraxaPeer::known_votes_
private

◆ last_status_pbft_chain_size_

std::atomic<PbftPeriod> taraxa::network::tarcap::TaraxaPeer::last_status_pbft_chain_size_ = 0

◆ mutex_for_sending_dag_blocks_

boost::shared_mutex taraxa::network::tarcap::TaraxaPeer::mutex_for_sending_dag_blocks_
mutable

◆ pbft_chain_size_

std::atomic<PbftPeriod> taraxa::network::tarcap::TaraxaPeer::pbft_chain_size_ = 0

◆ pbft_period_

std::atomic<PbftPeriod> taraxa::network::tarcap::TaraxaPeer::pbft_period_ = pbft_chain_size_ = 1

◆ pbft_round_

std::atomic<PbftRound> taraxa::network::tarcap::TaraxaPeer::pbft_round_ = 1

◆ peer_dag_synced_

std::atomic_bool taraxa::network::tarcap::TaraxaPeer::peer_dag_synced_ = false

◆ peer_dag_synced_time_

std::atomic_uint64_t taraxa::network::tarcap::TaraxaPeer::peer_dag_synced_time_ = 0

◆ peer_dag_syncing_

std::atomic_bool taraxa::network::tarcap::TaraxaPeer::peer_dag_syncing_ = false

◆ peer_light_node

std::atomic_bool taraxa::network::tarcap::TaraxaPeer::peer_light_node = false

◆ peer_light_node_history

std::atomic<PbftPeriod> taraxa::network::tarcap::TaraxaPeer::peer_light_node_history = 0

◆ peer_requested_dag_syncing_

std::atomic_bool taraxa::network::tarcap::TaraxaPeer::peer_requested_dag_syncing_ = false

◆ peer_requested_dag_syncing_time_

std::atomic_uint64_t taraxa::network::tarcap::TaraxaPeer::peer_requested_dag_syncing_time_ = 0

◆ sent_packets_stats_

PacketsStats taraxa::network::tarcap::TaraxaPeer::sent_packets_stats_
private

◆ suspicious_packet_count_

std::atomic<uint64_t> taraxa::network::tarcap::TaraxaPeer::suspicious_packet_count_ = 0
private

◆ syncing_

std::atomic<bool> taraxa::network::tarcap::TaraxaPeer::syncing_ = false

◆ timestamp_suspicious_packet_

std::atomic<uint64_t> taraxa::network::tarcap::TaraxaPeer::timestamp_suspicious_packet_ = 0
private

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