Skip to content

Commit 39df678

Browse files
committed
refactor: move CConnman, PeerManager out of CCoinJoinClientQueueManager ctor
1 parent f15b2ef commit 39df678

File tree

4 files changed

+18
-20
lines changed

4 files changed

+18
-20
lines changed

src/coinjoin/client.cpp

+10-7
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,20 @@
3030
#include <memory>
3131
#include <univalue.h>
3232

33-
PeerMsgRet CCoinJoinClientQueueManager::ProcessMessage(const CNode& peer, std::string_view msg_type, CDataStream& vRecv)
33+
PeerMsgRet CCoinJoinClientQueueManager::ProcessMessage(const CNode& peer, CConnman& connman, PeerManager& peerman,
34+
std::string_view msg_type, CDataStream& vRecv)
3435
{
3536
if (m_is_masternode) return {};
3637
if (!m_mn_sync.IsBlockchainSynced()) return {};
3738

3839
if (msg_type == NetMsgType::DSQUEUE) {
39-
return CCoinJoinClientQueueManager::ProcessDSQueue(peer, vRecv);
40+
return CCoinJoinClientQueueManager::ProcessDSQueue(peer, connman, peerman, vRecv);
4041
}
4142
return {};
4243
}
4344

44-
PeerMsgRet CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataStream& vRecv)
45+
PeerMsgRet CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CConnman& connman, PeerManager& peerman,
46+
CDataStream& vRecv)
4547
{
4648
assert(m_mn_metaman.IsValid());
4749

@@ -50,7 +52,7 @@ PeerMsgRet CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataS
5052

5153
{
5254
LOCK(cs_main);
53-
Assert(peerman)->EraseObjectRequest(peer.GetId(), CInv(MSG_DSQ, dsq.GetHash()));
55+
peerman.EraseObjectRequest(peer.GetId(), CInv(MSG_DSQ, dsq.GetHash()));
5456
}
5557

5658
if (dsq.masternodeOutpoint.IsNull() && dsq.m_protxHash.IsNull()) {
@@ -102,8 +104,9 @@ PeerMsgRet CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataS
102104
}
103105

104106
// if the queue is ready, submit if we can
105-
if (dsq.fReady && m_walletman.ForAnyCJClientMan([this, &dmn](std::unique_ptr<CCoinJoinClientManager>& clientman) {
106-
return clientman->TrySubmitDenominate(dmn->pdmnState->addr, this->connman);
107+
if (dsq.fReady &&
108+
m_walletman.ForAnyCJClientMan([this, &connman, &dmn](std::unique_ptr<CCoinJoinClientManager>& clientman) {
109+
return clientman->TrySubmitDenominate(dmn->pdmnState->addr, connman);
107110
})) {
108111
LogPrint(BCLog::COINJOIN, "DSQUEUE -- CoinJoin queue (%s) is ready on masternode %s\n", dsq.ToString(),
109112
dmn->pdmnState->addr.ToStringAddrPort());
@@ -132,7 +135,7 @@ PeerMsgRet CCoinJoinClientQueueManager::ProcessDSQueue(const CNode& peer, CDataS
132135
WITH_LOCK(cs_vecqueue, vecCoinJoinQueue.push_back(dsq));
133136
}
134137
} // cs_ProcessDSQueue
135-
peerman->RelayDSQ(dsq);
138+
peerman.RelayDSQ(dsq);
136139
return {};
137140
}
138141

src/coinjoin/client.h

+4-8
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,6 @@ class CCoinJoinClientSession : public CCoinJoinBaseSession
232232
class CCoinJoinClientQueueManager : public CCoinJoinBaseManager
233233
{
234234
private:
235-
CConnman& connman;
236-
std::unique_ptr<PeerManager>& peerman;
237235
CoinJoinWalletManager& m_walletman;
238236
CDeterministicMNManager& m_dmnman;
239237
CMasternodeMetaMan& m_mn_metaman;
@@ -243,20 +241,18 @@ class CCoinJoinClientQueueManager : public CCoinJoinBaseManager
243241
const bool m_is_masternode;
244242

245243
public:
246-
explicit CCoinJoinClientQueueManager(CConnman& _connman, std::unique_ptr<PeerManager>& _peerman,
247-
CoinJoinWalletManager& walletman, CDeterministicMNManager& dmnman,
244+
explicit CCoinJoinClientQueueManager(CoinJoinWalletManager& walletman, CDeterministicMNManager& dmnman,
248245
CMasternodeMetaMan& mn_metaman, const CMasternodeSync& mn_sync,
249246
bool is_masternode) :
250-
connman(_connman),
251-
peerman(_peerman),
252247
m_walletman(walletman),
253248
m_dmnman(dmnman),
254249
m_mn_metaman(mn_metaman),
255250
m_mn_sync(mn_sync),
256251
m_is_masternode{is_masternode} {};
257252

258-
PeerMsgRet ProcessMessage(const CNode& peer, std::string_view msg_type, CDataStream& vRecv) EXCLUSIVE_LOCKS_REQUIRED(!cs_vecqueue);
259-
PeerMsgRet ProcessDSQueue(const CNode& peer, CDataStream& vRecv);
253+
PeerMsgRet ProcessMessage(const CNode& peer, CConnman& connman, PeerManager& peerman, std::string_view msg_type,
254+
CDataStream& vRecv) EXCLUSIVE_LOCKS_REQUIRED(!cs_vecqueue);
255+
PeerMsgRet ProcessDSQueue(const CNode& peer, CConnman& connman, PeerManager& peerman, CDataStream& vRecv);
260256
void DoMaintenance();
261257
};
262258

src/coinjoin/context.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@ CJContext::CJContext(ChainstateManager& chainman, CConnman& connman, CDeterminis
1717
#ifdef ENABLE_WALLET
1818
walletman{std::make_unique<CoinJoinWalletManager>(chainman, dmnman, mn_metaman, mempool, mn_sync, queueman,
1919
/*is_masternode=*/mn_activeman != nullptr)},
20-
queueman{relay_txes
21-
? std::make_unique<CCoinJoinClientQueueManager>(connman, peerman, *walletman, dmnman, mn_metaman,
22-
mn_sync, /* is_masternode = */ mn_activeman != nullptr)
23-
: nullptr},
20+
queueman{relay_txes ? std::make_unique<CCoinJoinClientQueueManager>(*walletman, dmnman, mn_metaman, mn_sync,
21+
/*is_masternode=*/mn_activeman != nullptr)
22+
: nullptr},
2423
#endif // ENABLE_WALLET
2524
server{std::make_unique<CCoinJoinServer>(chainman, connman, dmnman, *dstxman, mn_metaman, mempool, mn_activeman,
2625
mn_sync, peerman)}

src/net_processing.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -5251,7 +5251,7 @@ void PeerManagerImpl::ProcessMessage(
52515251
{
52525252
//probably one the extensions
52535253
#ifdef ENABLE_WALLET
5254-
ProcessPeerMsgRet(m_cj_ctx->queueman->ProcessMessage(pfrom, msg_type, vRecv), pfrom);
5254+
ProcessPeerMsgRet(m_cj_ctx->queueman->ProcessMessage(pfrom, m_connman, *this, msg_type, vRecv), pfrom);
52555255
m_cj_ctx->walletman->ForEachCJClientMan([this, &pfrom, &msg_type, &vRecv](std::unique_ptr<CCoinJoinClientManager>& clientman) {
52565256
clientman->ProcessMessage(pfrom, m_chainman.ActiveChainstate(), m_connman, m_mempool, msg_type, vRecv);
52575257
});

0 commit comments

Comments
 (0)