PRCYCoin  2.0.0.7rc1
P2P Digital Currency
masternode-sync.h
Go to the documentation of this file.
1 // Copyright (c) 2014-2015 The Dash developers
2 // Copyright (c) 2015-2018 The PIVX developers
3 // Copyright (c) 2018-2020 The DAPS Project developers
4 // Distributed under the MIT/X11 software license, see the accompanying
5 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
6 
7 #ifndef MASTERNODE_SYNC_H
8 #define MASTERNODE_SYNC_H
9 
10 #define MASTERNODE_SYNC_INITIAL 0
11 #define MASTERNODE_SYNC_LIST 1
12 #define MASTERNODE_SYNC_MNW 2
13 #define MASTERNODE_SYNC_BUDGET 3
14 #define MASTERNODE_SYNC_BUDGET_PROP 10
15 #define MASTERNODE_SYNC_BUDGET_FIN 11
16 #define MASTERNODE_SYNC_FAILED 998
17 #define MASTERNODE_SYNC_FINISHED 999
18 
19 #define MASTERNODE_SYNC_TIMEOUT 5
20 #define MASTERNODE_SYNC_THRESHOLD 2
21 
22 class CMasternodeSync;
24 
25 //
26 // CMasternodeSync : Sync masternode assets in stages
27 //
28 
30 {
31 public:
32  std::map<uint256, int> mapSeenSyncMNB;
33  std::map<uint256, int> mapSeenSyncMNW;
34  std::map<uint256, int> mapSeenSyncBudget;
35 
38  int64_t lastBudgetItem;
39  int64_t lastFailure;
41 
42  std::atomic<int64_t> lastProcess;
43  std::atomic<bool> fBlockchainSynced;
44 
45  // sum of all counts
50  // peers that reported counts
55 
56  // Count peers we've requested the list from
59 
60  // Time when current masternode asset sync started
62 
64 
65  void AddedMasternodeList(uint256 hash);
66  void AddedMasternodeWinner(uint256 hash);
67  void AddedBudgetItem(uint256 hash);
68  void GetNextAsset();
69  std::string GetSyncStatus();
70  void ProcessMessage(CNode* pfrom, std::string& strCommand, CDataStream& vRecv);
71  bool IsBudgetFinEmpty();
72  bool IsBudgetPropEmpty();
73 
74  void Reset();
75  void Process();
76  bool IsSynced();
77  bool IsBlockchainSynced();
79  void ClearFulfilledRequest();
80 };
81 
82 #endif
CMasternodeSync::sumMasternodeList
int sumMasternodeList
Definition: masternode-sync.h:46
CMasternodeSync::Reset
void Reset()
Definition: masternode-sync.cpp:64
CMasternodeSync::IsBudgetFinEmpty
bool IsBudgetFinEmpty()
Definition: masternode-sync.cpp:134
CMasternodeSync::countBudgetItemProp
int countBudgetItemProp
Definition: masternode-sync.h:53
CMasternodeSync::mapSeenSyncBudget
std::map< uint256, int > mapSeenSyncBudget
Definition: masternode-sync.h:34
CMasternodeSync::RequestedMasternodeAssets
int RequestedMasternodeAssets
Definition: masternode-sync.h:57
CMasternodeSync::lastFailure
int64_t lastFailure
Definition: masternode-sync.h:39
CMasternodeSync::IsBlockchainSynced
bool IsBlockchainSynced()
Definition: masternode-sync.cpp:32
CNode
Information about a peer.
Definition: net.h:306
CMasternodeSync::lastMasternodeWinner
int64_t lastMasternodeWinner
Definition: masternode-sync.h:37
CMasternodeSync::AddedMasternodeList
void AddedMasternodeList(uint256 hash)
Definition: masternode-sync.cpp:89
CMasternodeSync::countMasternodeWinner
int countMasternodeWinner
Definition: masternode-sync.h:52
CMasternodeSync::countBudgetItemFin
int countBudgetItemFin
Definition: masternode-sync.h:54
CMasternodeSync::RequestedMasternodeAttempt
int RequestedMasternodeAttempt
Definition: masternode-sync.h:58
CMasternodeSync::ClearFulfilledRequest
void ClearFulfilledRequest()
Definition: masternode-sync.cpp:217
CMasternodeSync::sumBudgetItemFin
int sumBudgetItemFin
Definition: masternode-sync.h:49
masternodeSync
CMasternodeSync masternodeSync
Definition: masternode-sync.cpp:19
CMasternodeSync::countMasternodeList
int countMasternodeList
Definition: masternode-sync.h:51
CMasternodeSync::IsBudgetPropEmpty
bool IsBudgetPropEmpty()
Definition: masternode-sync.cpp:129
CMasternodeSync::lastBudgetItem
int64_t lastBudgetItem
Definition: masternode-sync.h:38
CMasternodeSync::nAssetSyncStarted
int64_t nAssetSyncStarted
Definition: masternode-sync.h:61
CMasternodeSync::fBlockchainSynced
std::atomic< bool > fBlockchainSynced
Definition: masternode-sync.h:43
CMasternodeSync::sumMasternodeWinner
int sumMasternodeWinner
Definition: masternode-sync.h:47
CMasternodeSync::lastProcess
std::atomic< int64_t > lastProcess
Definition: masternode-sync.h:42
CMasternodeSync::AddedMasternodeWinner
void AddedMasternodeWinner(uint256 hash)
Definition: masternode-sync.cpp:102
uint256
256-bit unsigned big integer.
Definition: uint256.h:38
CMasternodeSync::GetSyncStatus
std::string GetSyncStatus()
Definition: masternode-sync.cpp:161
CMasternodeSync::AddedBudgetItem
void AddedBudgetItem(uint256 hash)
Definition: masternode-sync.cpp:115
CMasternodeSync::IsSynced
bool IsSynced()
Definition: masternode-sync.cpp:27
CMasternodeSync::GetNextAsset
void GetNextAsset()
Definition: masternode-sync.cpp:139
CMasternodeSync::lastMasternodeList
int64_t lastMasternodeList
Definition: masternode-sync.h:36
CMasternodeSync::nCountFailures
int nCountFailures
Definition: masternode-sync.h:40
CMasternodeSync::IsMasternodeListSynced
bool IsMasternodeListSynced()
Definition: masternode-sync.h:78
CMasternodeSync::mapSeenSyncMNB
std::map< uint256, int > mapSeenSyncMNB
Definition: masternode-sync.h:32
CMasternodeSync
Definition: masternode-sync.h:29
CMasternodeSync::ProcessMessage
void ProcessMessage(CNode *pfrom, std::string &strCommand, CDataStream &vRecv)
Definition: masternode-sync.cpp:180
CDataStream
Double ended buffer combining vector and stream-like interfaces.
Definition: streams.h:34
CMasternodeSync::CMasternodeSync
CMasternodeSync()
Definition: masternode-sync.cpp:22
CMasternodeSync::sumBudgetItemProp
int sumBudgetItemProp
Definition: masternode-sync.h:48
MASTERNODE_SYNC_LIST
#define MASTERNODE_SYNC_LIST
Definition: masternode-sync.h:11
CMasternodeSync::Process
void Process()
Definition: masternode-sync.cpp:229
CMasternodeSync::mapSeenSyncMNW
std::map< uint256, int > mapSeenSyncMNW
Definition: masternode-sync.h:33