TARAXA
taraxa::Network Class Reference

#include <network.hpp>

Collaboration diagram for taraxa::Network:

Public Member Functions

 Network (const FullNodeConfig &config, const h256 &genesis_hash, const std::filesystem::path &network_file_path, const dev::KeyPair &key, std::shared_ptr< DbStorage > db, std::shared_ptr< PbftManager > pbft_mgr, std::shared_ptr< PbftChain > pbft_chain, std::shared_ptr< VoteManager > vote_mgr, std::shared_ptr< DagManager > dag_mgr, std::shared_ptr< TransactionManager > trx_mgr, std::shared_ptr< SlashingManager > slashing_manager, std::shared_ptr< pillar_chain::PillarChainManager > pillar_chain_mgr)
 
 ~Network ()
 
 Network (const Network &)=delete
 
 Network (Network &&)=delete
 
Networkoperator= (const Network &)=delete
 
Networkoperator= (Network &&)=delete
 
void start ()
 Starts threadpools for packets communication in general, specific packets processing and periodic events. More...
 
bool isStarted ()
 
std::list< dev::p2p::NodeEntrygetAllNodes () const
 
size_t getPeerCount ()
 
unsigned getNodeCount ()
 
Json::Value getStatus ()
 
bool pbft_syncing ()
 
uint64_t syncTimeSeconds () const
 
void setSyncStatePeriod (PbftPeriod period)
 
void gossipDagBlock (const DagBlock &block, bool proposed, const SharedTransactions &trxs)
 
void gossipVote (const std::shared_ptr< PbftVote > &vote, const std::shared_ptr< PbftBlock > &block, bool rebroadcast=false)
 
void gossipVotesBundle (const std::vector< std::shared_ptr< PbftVote >> &votes, bool rebroadcast=false)
 
void gossipPillarBlockVote (const std::shared_ptr< PillarVote > &vote, bool rebroadcast=false)
 
void handleMaliciousSyncPeer (const dev::p2p::NodeID &id)
 
std::shared_ptr< network::tarcap::TaraxaPeergetMaxChainPeer () const
 
void requestPillarBlockVotesBundle (PbftPeriod period, const blk_hash_t &pillar_block_hash)
 Request pillar block votes bundle packet from random peer. More...
 
bool packetQueueOverLimit () const
 Get packets queue status. More...
 
template<typename PacketHandlerType >
std::shared_ptr< PacketHandlerType > getSpecificHandler () const
 
dev::p2p::NodeID getNodeId () const
 
std::shared_ptr< network::tarcap::TaraxaPeergetPeer (dev::p2p::NodeID const &id) const
 

Private Member Functions

void registerPeriodicEvents (const std::shared_ptr< PbftManager > &pbft_mgr, std::shared_ptr< TransactionManager > trx_mgr)
 Register period events, e.g. sending status packet, transaction packet etc... More...
 
void addBootNodes (bool initial=false)
 

Static Private Member Functions

static std::pair< bool, bi::tcp::endpoint > resolveHost (string const &addr, uint16_t port)
 

Private Attributes

const FullNodeConfigkConf
 
const dev::Public pub_key_
 
std::shared_ptr< network::tarcap::TimePeriodPacketsStatsall_packets_stats_
 
std::shared_ptr< network::tarcap::NodeStatsnode_stats_
 
std::shared_ptr< network::tarcap::PbftSyncingStatepbft_syncing_state_
 
util::ThreadPool tp_
 
std::shared_ptr< dev::p2p::Hosthost_
 
std::map< network::tarcap::TarcapVersion, std::shared_ptr< network::tarcap::TaraxaCapability >, std::greater< network::tarcap::TarcapVersion > > tarcaps_
 
std::shared_ptr< network::threadpool::PacketsThreadPoolpackets_tp_
 
util::ThreadPool periodic_events_tp_
 

Constructor & Destructor Documentation

◆ Network() [1/3]

taraxa::Network::Network ( const FullNodeConfig config,
const h256 genesis_hash,
const std::filesystem::path &  network_file_path,
const dev::KeyPair key,
std::shared_ptr< DbStorage db,
std::shared_ptr< PbftManager pbft_mgr,
std::shared_ptr< PbftChain pbft_chain,
std::shared_ptr< VoteManager vote_mgr,
std::shared_ptr< DagManager dag_mgr,
std::shared_ptr< TransactionManager trx_mgr,
std::shared_ptr< SlashingManager slashing_manager,
std::shared_ptr< pillar_chain::PillarChainManager pillar_chain_mgr 
)

◆ ~Network()

taraxa::Network::~Network ( )

◆ Network() [2/3]

taraxa::Network::Network ( const Network )
delete

◆ Network() [3/3]

taraxa::Network::Network ( Network &&  )
delete

Member Function Documentation

◆ addBootNodes()

void taraxa::Network::addBootNodes ( bool  initial = false)
private

◆ getAllNodes()

std::list< dev::p2p::NodeEntry > taraxa::Network::getAllNodes ( ) const

◆ getMaxChainPeer()

std::shared_ptr< network::tarcap::TaraxaPeer > taraxa::Network::getMaxChainPeer ( ) const

◆ getNodeCount()

unsigned taraxa::Network::getNodeCount ( )

◆ getNodeId()

dev::p2p::NodeID taraxa::Network::getNodeId ( ) const

◆ getPeer()

std::shared_ptr< network::tarcap::TaraxaPeer > taraxa::Network::getPeer ( dev::p2p::NodeID const &  id) const

◆ getPeerCount()

size_t taraxa::Network::getPeerCount ( )

◆ getSpecificHandler()

template<typename PacketHandlerType >
std::shared_ptr< PacketHandlerType > taraxa::Network::getSpecificHandler

◆ getStatus()

Json::Value taraxa::Network::getStatus ( )

◆ gossipDagBlock()

void taraxa::Network::gossipDagBlock ( const DagBlock block,
bool  proposed,
const SharedTransactions trxs 
)

◆ gossipPillarBlockVote()

void taraxa::Network::gossipPillarBlockVote ( const std::shared_ptr< PillarVote > &  vote,
bool  rebroadcast = false 
)

◆ gossipVote()

void taraxa::Network::gossipVote ( const std::shared_ptr< PbftVote > &  vote,
const std::shared_ptr< PbftBlock > &  block,
bool  rebroadcast = false 
)

◆ gossipVotesBundle()

void taraxa::Network::gossipVotesBundle ( const std::vector< std::shared_ptr< PbftVote >> &  votes,
bool  rebroadcast = false 
)

◆ handleMaliciousSyncPeer()

void taraxa::Network::handleMaliciousSyncPeer ( const dev::p2p::NodeID id)

◆ isStarted()

bool taraxa::Network::isStarted ( )

◆ operator=() [1/2]

Network& taraxa::Network::operator= ( const Network )
delete

◆ operator=() [2/2]

Network& taraxa::Network::operator= ( Network &&  )
delete

◆ packetQueueOverLimit()

bool taraxa::Network::packetQueueOverLimit ( ) const

Get packets queue status.

Returns
true if packets queue is over the limit

◆ pbft_syncing()

bool taraxa::Network::pbft_syncing ( )

◆ registerPeriodicEvents()

void taraxa::Network::registerPeriodicEvents ( const std::shared_ptr< PbftManager > &  pbft_mgr,
std::shared_ptr< TransactionManager trx_mgr 
)
private

Register period events, e.g. sending status packet, transaction packet etc...

Parameters
config
pbft_mgr
trx_mgr

◆ requestPillarBlockVotesBundle()

void taraxa::Network::requestPillarBlockVotesBundle ( taraxa::PbftPeriod  period,
const blk_hash_t pillar_block_hash 
)

Request pillar block votes bundle packet from random peer.

Parameters
period
pillar_block_hash

◆ resolveHost()

static std::pair<bool, bi::tcp::endpoint> taraxa::Network::resolveHost ( string const &  addr,
uint16_t  port 
)
staticprivate

◆ setSyncStatePeriod()

void taraxa::Network::setSyncStatePeriod ( PbftPeriod  period)

◆ start()

void taraxa::Network::start ( )

Starts threadpools for packets communication in general, specific packets processing and periodic events.

◆ syncTimeSeconds()

uint64_t taraxa::Network::syncTimeSeconds ( ) const

Member Data Documentation

◆ all_packets_stats_

std::shared_ptr<network::tarcap::TimePeriodPacketsStats> taraxa::Network::all_packets_stats_
private

◆ host_

std::shared_ptr<dev::p2p::Host> taraxa::Network::host_
private

◆ kConf

const FullNodeConfig& taraxa::Network::kConf
private

◆ node_stats_

std::shared_ptr<network::tarcap::NodeStats> taraxa::Network::node_stats_
private

◆ packets_tp_

std::shared_ptr<network::threadpool::PacketsThreadPool> taraxa::Network::packets_tp_
private

◆ pbft_syncing_state_

std::shared_ptr<network::tarcap::PbftSyncingState> taraxa::Network::pbft_syncing_state_
private

◆ periodic_events_tp_

util::ThreadPool taraxa::Network::periodic_events_tp_
private

◆ pub_key_

const dev::Public taraxa::Network::pub_key_
private

◆ tarcaps_

std::map<network::tarcap::TarcapVersion, std::shared_ptr<network::tarcap::TaraxaCapability>, std::greater<network::tarcap::TarcapVersion> > taraxa::Network::tarcaps_
private

◆ tp_

util::ThreadPool taraxa::Network::tp_
private

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