@@ -85,9 +85,8 @@ void CDKGPendingMessages::Clear()
8585
8686// ////
8787
88- CDKGSessionHandler::CDKGSessionHandler (const Consensus::LLMQParams& _params, ctpl::thread_pool& _messageHandlerPool, CBLSWorker& _blsWorker, CDKGSessionManager& _dkgManager) :
88+ CDKGSessionHandler::CDKGSessionHandler (const Consensus::LLMQParams& _params, CBLSWorker& _blsWorker, CDKGSessionManager& _dkgManager) :
8989 params (_params),
90- messageHandlerPool (_messageHandlerPool),
9190 blsWorker (_blsWorker),
9291 dkgManager (_dkgManager),
9392 curSession (std::make_shared<CDKGSession>(_params, _blsWorker, _dkgManager)),
@@ -96,18 +95,13 @@ CDKGSessionHandler::CDKGSessionHandler(const Consensus::LLMQParams& _params, ctp
9695 pendingJustifications ((size_t )_params.size * 2 , MSG_QUORUM_JUSTIFICATION),
9796 pendingPrematureCommitments ((size_t )_params.size * 2 , MSG_QUORUM_PREMATURE_COMMITMENT)
9897{
99- phaseHandlerThread = std::thread ([this ] {
100- RenameThread (strprintf (" dash-q-phase-%d" , (uint8_t )params.type ).c_str ());
101- PhaseHandlerThread ();
102- });
98+ if (params.type == Consensus::LLMQ_NONE) {
99+ throw std::runtime_error (" Can't initialize CDKGSessionHandler with LLMQ_NONE type." );
100+ }
103101}
104102
105103CDKGSessionHandler::~CDKGSessionHandler ()
106104{
107- stopRequested = true ;
108- if (phaseHandlerThread.joinable ()) {
109- phaseHandlerThread.join ();
110- }
111105}
112106
113107void CDKGSessionHandler::UpdatedBlockTip (const CBlockIndex* pindexNew)
@@ -146,6 +140,24 @@ void CDKGSessionHandler::ProcessMessage(CNode* pfrom, const std::string& strComm
146140 }
147141}
148142
143+ void CDKGSessionHandler::StartThread ()
144+ {
145+ if (phaseHandlerThread.joinable ()) {
146+ throw std::runtime_error (" Tried to start an already started CDKGSessionHandler thread." );
147+ }
148+
149+ std::string threadName = strprintf (" q-phase-%d" , params.type );
150+ phaseHandlerThread = std::thread (&TraceThread<std::function<void ()> >, threadName, std::function<void ()>(std::bind (&CDKGSessionHandler::PhaseHandlerThread, this )));
151+ }
152+
153+ void CDKGSessionHandler::StopThread ()
154+ {
155+ stopRequested = true ;
156+ if (phaseHandlerThread.joinable ()) {
157+ phaseHandlerThread.join ();
158+ }
159+ }
160+
149161bool CDKGSessionHandler::InitNewQuorum (const CBlockIndex* pindexQuorum)
150162{
151163 // AssertLockHeld(cs_main);
0 commit comments