mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-14 11:26:09 -05:00
net: add GetOrphanTransactions() to PeerManager
Updates PeerManager (and Impl) to provide orphans with metadata
This commit is contained in:
parent
91b65adff2
commit
532491faf1
4 changed files with 22 additions and 0 deletions
|
@ -515,6 +515,7 @@ public:
|
||||||
std::optional<std::string> FetchBlock(NodeId peer_id, const CBlockIndex& block_index) override
|
std::optional<std::string> FetchBlock(NodeId peer_id, const CBlockIndex& block_index) override
|
||||||
EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||||
bool GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats) const override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
bool GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats) const override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_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);
|
||||||
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);
|
||||||
|
@ -1917,6 +1918,12 @@ bool PeerManagerImpl::GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats) c
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<TxOrphanage::OrphanTxBase> PeerManagerImpl::GetOrphanTransactions()
|
||||||
|
{
|
||||||
|
LOCK(m_tx_download_mutex);
|
||||||
|
return m_orphanage.GetOrphanTransactions();
|
||||||
|
}
|
||||||
|
|
||||||
PeerManagerInfo PeerManagerImpl::GetInfo() const
|
PeerManagerInfo PeerManagerImpl::GetInfo() const
|
||||||
{
|
{
|
||||||
return PeerManagerInfo{
|
return PeerManagerInfo{
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#define BITCOIN_NET_PROCESSING_H
|
#define BITCOIN_NET_PROCESSING_H
|
||||||
|
|
||||||
#include <net.h>
|
#include <net.h>
|
||||||
|
#include <txorphanage.h>
|
||||||
#include <validationinterface.h>
|
#include <validationinterface.h>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
@ -99,6 +100,8 @@ public:
|
||||||
/** Get statistics from node state */
|
/** Get statistics from node state */
|
||||||
virtual bool GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats) const = 0;
|
virtual bool GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats) const = 0;
|
||||||
|
|
||||||
|
virtual std::vector<TxOrphanage::OrphanTxBase> GetOrphanTransactions() = 0;
|
||||||
|
|
||||||
/** Get peer manager info. */
|
/** Get peer manager info. */
|
||||||
virtual PeerManagerInfo GetInfo() const = 0;
|
virtual PeerManagerInfo GetInfo() const = 0;
|
||||||
|
|
||||||
|
|
|
@ -277,3 +277,13 @@ std::vector<std::pair<CTransactionRef, NodeId>> TxOrphanage::GetChildrenFromDiff
|
||||||
}
|
}
|
||||||
return children_found;
|
return children_found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<TxOrphanage::OrphanTxBase> TxOrphanage::GetOrphanTransactions() const
|
||||||
|
{
|
||||||
|
std::vector<OrphanTxBase> ret;
|
||||||
|
ret.reserve(m_orphans.size());
|
||||||
|
for (auto const& o : m_orphans) {
|
||||||
|
ret.push_back({o.second.tx, o.second.fromPeer, o.second.nTimeExpire});
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -79,6 +79,8 @@ public:
|
||||||
NodeSeconds nTimeExpire;
|
NodeSeconds nTimeExpire;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::vector<OrphanTxBase> GetOrphanTransactions() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
struct OrphanTx : public OrphanTxBase {
|
struct OrphanTx : public OrphanTxBase {
|
||||||
size_t list_pos;
|
size_t list_pos;
|
||||||
|
|
Loading…
Add table
Reference in a new issue