Line data Source code
1 : // Copyright (c) 2021 The PIVX Core developers 2 : // Distributed under the MIT software license, see the accompanying 3 : // file COPYING or https://www.opensource.org/licenses/mit-license.php. 4 : 5 : #include "tiertwo/tiertwo_sync_state.h" 6 : #include "uint256.h" 7 : #include "utiltime.h" 8 : 9 : TierTwoSyncState g_tiertwo_sync_state; 10 : 11 1402 : static void UpdateLastTime(const uint256& hash, int64_t& last, std::map<uint256, int>& mapSeen) 12 : { 13 1402 : auto it = mapSeen.find(hash); 14 1402 : if (it != mapSeen.end()) { 15 378 : if (it->second < MASTERNODE_SYNC_THRESHOLD) { 16 115 : last = GetTime(); 17 115 : it->second++; 18 : } 19 : } else { 20 1024 : last = GetTime(); 21 1024 : mapSeen.emplace(hash, 1); 22 : } 23 1402 : } 24 : 25 166 : void TierTwoSyncState::AddedMasternodeList(const uint256& hash) 26 : { 27 166 : UpdateLastTime(hash, lastMasternodeList, mapSeenSyncMNB); 28 166 : } 29 : 30 954 : void TierTwoSyncState::AddedMasternodeWinner(const uint256& hash) 31 : { 32 954 : UpdateLastTime(hash, lastMasternodeWinner, mapSeenSyncMNW); 33 954 : } 34 : 35 282 : void TierTwoSyncState::AddedBudgetItem(const uint256& hash) 36 : { 37 282 : UpdateLastTime(hash, lastBudgetItem, mapSeenSyncBudget); 38 282 : } 39 : 40 439 : void TierTwoSyncState::ResetData() 41 : { 42 439 : lastMasternodeList = 0; 43 439 : lastMasternodeWinner = 0; 44 439 : lastBudgetItem = 0; 45 439 : mapSeenSyncMNB.clear(); 46 439 : mapSeenSyncMNW.clear(); 47 439 : mapSeenSyncBudget.clear(); 48 439 : }