PIVX Core  5.6.99
P2P Digital Currency
quorums_init.cpp
Go to the documentation of this file.
1 // Copyright (c) 2018-2021 The Dash Core developers
2 // Copyright (c) 2022 The PIVX Core developers
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #include "llmq/quorums_init.h"
7 
8 #include "bls/bls_worker.h"
9 #include "dbwrapper.h"
10 #include "llmq/quorums.h"
12 #include "llmq/quorums_debug.h"
14 #include "quorums_chainlocks.h"
15 #include "quorums_signing.h"
16 #include "quorums_signing_shares.h"
17 
18 namespace llmq
19 {
20 
23 
25 {
26  llmqDb = new CDBWrapper(unitTests ? "" : (GetDataDir() / "llmq"), 1 << 20, unitTests, false, CLIENT_VERSION | ADDRV2_FORMAT);
27  blsWorker = new CBLSWorker();
28 
34  quorumSigningManager.reset(new CSigningManager(*llmqDb, unitTests));
36 }
37 
39 {
40  chainLocksHandler.reset();
41  quorumSigningManager.reset();
42  quorumSigSharesManager.reset();
44  quorumBlockProcessor.reset();
45  quorumDKGDebugManager.reset();
46  quorumManager.reset();
47  delete blsWorker;
48  blsWorker = nullptr;
49  delete llmqDb;
50  llmqDb = nullptr;
51 }
52 
54 {
55  if (blsWorker) {
56  blsWorker->Start();
57  }
59  quorumDKGSessionManager->StartThreads();
60  }
62  quorumSigSharesManager->RegisterAsRecoveredSigsListener();
63  quorumSigSharesManager->StartWorkerThread();
64  }
65  if (chainLocksHandler) {
66  chainLocksHandler->Start();
67  }
68 }
69 
71 {
72  if (chainLocksHandler) {
73  chainLocksHandler->Stop();
74  }
76  quorumSigSharesManager->StopWorkerThread();
77  quorumSigSharesManager->UnregisterAsRecoveredSigsListener();
78  }
80  quorumDKGSessionManager->StopThreads();
81  }
82  if (blsWorker) {
83  blsWorker->Stop();
84  }
85 }
86 
88 {
90  quorumSigSharesManager->Interrupt();
91  }
92 }
93 
94 } // namespace llmq
void Start()
Definition: bls_worker.cpp:63
void Stop()
Definition: bls_worker.cpp:71
Definition: evodb.h:32
The quorum manager maintains quorums which were mined on chain.
Definition: quorums.h:81
std::unique_ptr< CEvoDB > evoDb
Definition: evodb.cpp:10
Definition: quorums.cpp:26
void DestroyLLMQSystem()
void StartLLMQSystem()
std::unique_ptr< CQuorumBlockProcessor > quorumBlockProcessor
std::unique_ptr< CQuorumManager > quorumManager
Definition: quorums.cpp:31
void InterruptLLMQSystem()
void StopLLMQSystem()
std::unique_ptr< CDKGDebugManager > quorumDKGDebugManager
std::unique_ptr< CDKGSessionManager > quorumDKGSessionManager
std::unique_ptr< CSigningManager > quorumSigningManager
std::unique_ptr< CSigSharesManager > quorumSigSharesManager
std::unique_ptr< CChainLocksHandler > chainLocksHandler
CBLSWorker * blsWorker
void InitLLMQSystem(CEvoDB &evoDb, CScheduler *scheduler, bool unitTests)
CDBWrapper * llmqDb
const fs::path & GetDataDir(bool fNetSpecific)
Definition: system.cpp:724
CScheduler scheduler