mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-12 18:44:59 +01:00
p2p: Add PeerManager method to count the amount of inbound/outbounds fanout peers
This commit is contained in:
parent
0e29099687
commit
a461a12041
2 changed files with 24 additions and 0 deletions
|
@ -503,6 +503,7 @@ public:
|
||||||
std::vector<TxOrphanage::OrphanTxBase> GetOrphanTransactions() override EXCLUSIVE_LOCKS_REQUIRED(!m_tx_download_mutex);
|
std::vector<TxOrphanage::OrphanTxBase> GetOrphanTransactions() override EXCLUSIVE_LOCKS_REQUIRED(!m_tx_download_mutex);
|
||||||
PeerManagerInfo GetInfo() const override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
PeerManagerInfo GetInfo() const override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||||
void SendPings() override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
void SendPings() override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||||
|
std::pair<size_t, size_t> GetFanoutPeersCount() override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||||
void RelayTransaction(const uint256& txid, const uint256& wtxid) override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
void RelayTransaction(const uint256& txid, const uint256& wtxid) override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||||
void SetBestBlock(int height, std::chrono::seconds time) override
|
void SetBestBlock(int height, std::chrono::seconds time) override
|
||||||
{
|
{
|
||||||
|
@ -2114,6 +2115,26 @@ void PeerManagerImpl::SendPings()
|
||||||
for(auto& it : m_peer_map) it.second->m_ping_queued = true;
|
for(auto& it : m_peer_map) it.second->m_ping_queued = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::pair<size_t, size_t> PeerManagerImpl::GetFanoutPeersCount()
|
||||||
|
{
|
||||||
|
|
||||||
|
size_t inbounds_fanout_tx_relay = 0, outbounds_fanout_tx_relay = 0;
|
||||||
|
|
||||||
|
if (m_txreconciliation) {
|
||||||
|
LOCK(m_peer_mutex);
|
||||||
|
for(const auto& [peer_id, peer] : m_peer_map) {
|
||||||
|
if (const auto tx_relay = peer->GetTxRelay()) {
|
||||||
|
const bool peer_relays_txs = WITH_LOCK(tx_relay->m_bloom_filter_mutex, return tx_relay->m_relay_txs);
|
||||||
|
if (peer_relays_txs && !m_txreconciliation->IsPeerRegistered(peer_id)) {
|
||||||
|
peer->m_is_inbound ? ++inbounds_fanout_tx_relay : ++outbounds_fanout_tx_relay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::pair(inbounds_fanout_tx_relay, outbounds_fanout_tx_relay);
|
||||||
|
}
|
||||||
|
|
||||||
void PeerManagerImpl::RelayTransaction(const uint256& txid, const uint256& wtxid)
|
void PeerManagerImpl::RelayTransaction(const uint256& txid, const uint256& wtxid)
|
||||||
{
|
{
|
||||||
LOCK(m_peer_mutex);
|
LOCK(m_peer_mutex);
|
||||||
|
|
|
@ -108,6 +108,9 @@ public:
|
||||||
/** Relay transaction to all peers. */
|
/** Relay transaction to all peers. */
|
||||||
virtual void RelayTransaction(const uint256& txid, const uint256& wtxid) = 0;
|
virtual void RelayTransaction(const uint256& txid, const uint256& wtxid) = 0;
|
||||||
|
|
||||||
|
/** Get the amount of inbounds (first) and outbounds fanout peers (second). */
|
||||||
|
virtual std::pair<size_t, size_t> GetFanoutPeersCount() = 0;
|
||||||
|
|
||||||
/** Send ping message to all peers */
|
/** Send ping message to all peers */
|
||||||
virtual void SendPings() = 0;
|
virtual void SendPings() = 0;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue