Skip to content

Commit fa7027d

Browse files
committed
[refactor] add CheckIsEmpty and GetOrphanTransactions, remove access to TxDownloadMan internals
1 parent 969b072 commit fa7027d

File tree

4 files changed

+44
-22
lines changed

4 files changed

+44
-22
lines changed

src/net_processing.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1527,10 +1527,7 @@ void PeerManagerImpl::InitializeNode(const CNode& node, ServiceFlags our_service
15271527
LOCK(cs_main); // For m_node_states
15281528
m_node_states.try_emplace(m_node_states.end(), nodeid);
15291529
}
1530-
{
1531-
LOCK(m_tx_download_mutex);
1532-
assert(m_txdownloadman.GetTxRequestRef().Count(nodeid) == 0);
1533-
}
1530+
WITH_LOCK(m_tx_download_mutex, m_txdownloadman.CheckIsEmpty(nodeid));
15341531

15351532
if (NetPermissions::HasFlag(node.m_permission_flags, NetPermissionFlags::BloomFilter)) {
15361533
our_services = static_cast<ServiceFlags>(our_services | NODE_BLOOM);
@@ -1616,9 +1613,7 @@ void PeerManagerImpl::FinalizeNode(const CNode& node)
16161613
assert(m_peers_downloading_from == 0);
16171614
assert(m_outbound_peers_with_protect_from_disconnect == 0);
16181615
assert(m_wtxid_relay_peers == 0);
1619-
LOCK(m_tx_download_mutex);
1620-
assert(m_txdownloadman.GetTxRequestRef().Size() == 0);
1621-
assert(m_txdownloadman.GetOrphanageRef().Size() == 0);
1616+
WITH_LOCK(m_tx_download_mutex, m_txdownloadman.CheckIsEmpty());
16221617
}
16231618
} // cs_main
16241619
if (node.fSuccessfullyConnected &&
@@ -1727,7 +1722,7 @@ bool PeerManagerImpl::GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats) c
17271722
std::vector<TxOrphanage::OrphanTxBase> PeerManagerImpl::GetOrphanTransactions()
17281723
{
17291724
LOCK(m_tx_download_mutex);
1730-
return m_txdownloadman.GetOrphanageRef().GetOrphanTransactions();
1725+
return m_txdownloadman.GetOrphanTransactions();
17311726
}
17321727

17331728
PeerManagerInfo PeerManagerImpl::GetInfo() const

src/node/txdownloadman.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <net.h>
99
#include <policy/packages.h>
10+
#include <txorphanage.h>
1011

1112
#include <cstdint>
1213
#include <memory>
@@ -15,7 +16,6 @@ class CBlock;
1516
class CRollingBloomFilter;
1617
class CTxMemPool;
1718
class GenTxid;
18-
class TxOrphanage;
1919
class TxRequestTracker;
2020
namespace node {
2121
class TxDownloadManagerImpl;
@@ -121,11 +121,6 @@ class TxDownloadManager {
121121
explicit TxDownloadManager(const TxDownloadOptions& options);
122122
~TxDownloadManager();
123123

124-
// Get references to internal data structures. Outside access to these data structures should be
125-
// temporary and removed later once logic has been moved internally.
126-
TxOrphanage& GetOrphanageRef();
127-
TxRequestTracker& GetTxRequestRef();
128-
129124
// Responses to chain events. TxDownloadManager is not an actual client of ValidationInterface, these are called through PeerManager.
130125
void ActiveTipChange();
131126
void BlockConnected(const std::shared_ptr<const CBlock>& pblock);
@@ -167,6 +162,15 @@ class TxDownloadManager {
167162

168163
/** Returns next orphan tx to consider, or nullptr if none exist. */
169164
CTransactionRef GetTxToReconsider(NodeId nodeid);
165+
166+
/** Check that all data structures are empty. */
167+
void CheckIsEmpty() const;
168+
169+
/** Check that all data structures that track per-peer information have nothing for this peer. */
170+
void CheckIsEmpty(NodeId nodeid) const;
171+
172+
/** Wrapper for TxOrphanage::GetOrphanTransactions */
173+
std::vector<TxOrphanage::OrphanTxBase> GetOrphanTransactions() const;
170174
};
171175
} // namespace node
172176
#endif // BITCOIN_NODE_TXDOWNLOADMAN_H

src/node/txdownloadman_impl.cpp

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,6 @@ TxDownloadManager::TxDownloadManager(const TxDownloadOptions& options) :
1919
{}
2020
TxDownloadManager::~TxDownloadManager() = default;
2121

22-
TxOrphanage& TxDownloadManager::GetOrphanageRef()
23-
{
24-
return m_impl->m_orphanage;
25-
}
26-
TxRequestTracker& TxDownloadManager::GetTxRequestRef()
27-
{
28-
return m_impl->m_txrequest;
29-
}
3022
void TxDownloadManager::ActiveTipChange()
3123
{
3224
m_impl->ActiveTipChange();
@@ -83,6 +75,18 @@ CTransactionRef TxDownloadManager::GetTxToReconsider(NodeId nodeid)
8375
{
8476
return m_impl->GetTxToReconsider(nodeid);
8577
}
78+
void TxDownloadManager::CheckIsEmpty() const
79+
{
80+
m_impl->CheckIsEmpty();
81+
}
82+
void TxDownloadManager::CheckIsEmpty(NodeId nodeid) const
83+
{
84+
m_impl->CheckIsEmpty(nodeid);
85+
}
86+
std::vector<TxOrphanage::OrphanTxBase> TxDownloadManager::GetOrphanTransactions() const
87+
{
88+
return m_impl->GetOrphanTransactions();
89+
}
8690

8791
// TxDownloadManagerImpl
8892
void TxDownloadManagerImpl::ActiveTipChange()
@@ -515,4 +519,18 @@ CTransactionRef TxDownloadManagerImpl::GetTxToReconsider(NodeId nodeid)
515519
return m_orphanage.GetTxToReconsider(nodeid);
516520
}
517521

522+
void TxDownloadManagerImpl::CheckIsEmpty(NodeId nodeid)
523+
{
524+
assert(m_txrequest.Count(nodeid) == 0);
525+
}
526+
void TxDownloadManagerImpl::CheckIsEmpty()
527+
{
528+
assert(m_orphanage.Size() == 0);
529+
assert(m_txrequest.Size() == 0);
530+
assert(m_num_wtxid_peers == 0);
531+
}
532+
std::vector<TxOrphanage::OrphanTxBase> TxDownloadManagerImpl::GetOrphanTransactions() const
533+
{
534+
return m_orphanage.GetOrphanTransactions();
535+
}
518536
} // namespace node

src/node/txdownloadman_impl.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,11 @@ class TxDownloadManagerImpl {
182182

183183
bool HaveMoreWork(NodeId nodeid);
184184
CTransactionRef GetTxToReconsider(NodeId nodeid);
185+
186+
void CheckIsEmpty();
187+
void CheckIsEmpty(NodeId nodeid);
188+
189+
std::vector<TxOrphanage::OrphanTxBase> GetOrphanTransactions() const;
185190
};
186191
} // namespace node
187192
#endif // BITCOIN_NODE_TXDOWNLOADMAN_IMPL_H

0 commit comments

Comments
 (0)