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 10674 : static void UpdateLastTime(const uint256& hash, int64_t& last, std::map<uint256, int>& mapSeen) 12 : { 13 10674 : auto it = mapSeen.find(hash); 14 10674 : if (it != mapSeen.end()) { 15 8401 : if (it->second < MASTERNODE_SYNC_THRESHOLD) { 16 1183 : last = GetTime(); 17 1183 : it->second++; 18 : } 19 : } else { 20 2273 : last = GetTime(); 21 2273 : mapSeen.emplace(hash, 1); 22 : } 23 10674 : } 24 : 25 264 : void TierTwoSyncState::AddedMasternodeList(const uint256& hash) 26 : { 27 264 : UpdateLastTime(hash, lastMasternodeList, mapSeenSyncMNB); 28 264 : } 29 : 30 3763 : void TierTwoSyncState::AddedMasternodeWinner(const uint256& hash) 31 : { 32 3763 : UpdateLastTime(hash, lastMasternodeWinner, mapSeenSyncMNW); 33 3763 : } 34 : 35 6647 : void TierTwoSyncState::AddedBudgetItem(const uint256& hash) 36 : { 37 6647 : UpdateLastTime(hash, lastBudgetItem, mapSeenSyncBudget); 38 6647 : } 39 : 40 530 : void TierTwoSyncState::ResetData() 41 : { 42 530 : lastMasternodeList = 0; 43 530 : lastMasternodeWinner = 0; 44 530 : lastBudgetItem = 0; 45 530 : mapSeenSyncMNB.clear(); 46 530 : mapSeenSyncMNW.clear(); 47 530 : mapSeenSyncBudget.clear(); 48 530 : }