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