mirror of
https://github.com/dashpay/dash.git
synced 2024-12-28 13:32:47 +01:00
8a1ec935a0
* scripted-diff: Replace #include "" with #include <> (ryanofsky) -BEGIN VERIFY SCRIPT- for f in \ src/*.cpp \ src/*.h \ src/bench/*.cpp \ src/bench/*.h \ src/compat/*.cpp \ src/compat/*.h \ src/consensus/*.cpp \ src/consensus/*.h \ src/crypto/*.cpp \ src/crypto/*.h \ src/crypto/ctaes/*.h \ src/policy/*.cpp \ src/policy/*.h \ src/primitives/*.cpp \ src/primitives/*.h \ src/qt/*.cpp \ src/qt/*.h \ src/qt/test/*.cpp \ src/qt/test/*.h \ src/rpc/*.cpp \ src/rpc/*.h \ src/script/*.cpp \ src/script/*.h \ src/support/*.cpp \ src/support/*.h \ src/support/allocators/*.h \ src/test/*.cpp \ src/test/*.h \ src/wallet/*.cpp \ src/wallet/*.h \ src/wallet/test/*.cpp \ src/wallet/test/*.h \ src/zmq/*.cpp \ src/zmq/*.h do base=${f%/*}/ relbase=${base#src/} sed -i "s:#include \"\(.*\)\"\(.*\):if test -e \$base'\\1'; then echo \"#include <\"\$relbase\"\\1>\\2\"; else echo \"#include <\\1>\\2\"; fi:e" $f done -END VERIFY SCRIPT- Signed-off-by: Pasta <pasta@dashboost.org> * scripted-diff: Replace #include "" with #include <> (Dash Specific) -BEGIN VERIFY SCRIPT- for f in \ src/bls/*.cpp \ src/bls/*.h \ src/evo/*.cpp \ src/evo/*.h \ src/governance/*.cpp \ src/governance/*.h \ src/llmq/*.cpp \ src/llmq/*.h \ src/masternode/*.cpp \ src/masternode/*.h \ src/privatesend/*.cpp \ src/privatesend/*.h do base=${f%/*}/ relbase=${base#src/} sed -i "s:#include \"\(.*\)\"\(.*\):if test -e \$base'\\1'; then echo \"#include <\"\$relbase\"\\1>\\2\"; else echo \"#include <\\1>\\2\"; fi:e" $f done -END VERIFY SCRIPT- Signed-off-by: Pasta <pasta@dashboost.org> * build: Remove -I for everything but project root Remove -I from build system for everything but the project root, and built-in dependencies. Signed-off-by: Pasta <pasta@dashboost.org> # Conflicts: # src/Makefile.test.include * qt: refactor: Use absolute include paths in .ui files * qt: refactor: Changes to make include paths absolute This makes all include paths in the GUI absolute. Many changes are involved as every single source file in src/qt/ assumes to be able to use relative includes. Signed-off-by: Pasta <pasta@dashboost.org> # Conflicts: # src/qt/dash.cpp # src/qt/optionsmodel.cpp # src/qt/test/rpcnestedtests.cpp * test: refactor: Use absolute include paths for test data files * Recommend #include<> syntax in developer notes * refactor: Include obj/build.h instead of build.h * END BACKPORT #11651 Remove trailing whitespace causing travis failure * fix backport 11651 Signed-off-by: Pasta <pasta@dashboost.org> * More of 11651 * fix blockchain.cpp Signed-off-by: pasta <pasta@dashboost.org> * Add missing "qt/" in includes * Add missing "test/" in includes * Fix trailing whitespaces Co-authored-by: Wladimir J. van der Laan <laanwj@gmail.com> Co-authored-by: Russell Yanofsky <russ@yanofsky.org> Co-authored-by: MeshCollider <dobsonsa68@gmail.com> Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
95 lines
2.9 KiB
C++
95 lines
2.9 KiB
C++
// Copyright (c) 2014-2019 The Dash Core developers
|
|
// Distributed under the MIT/X11 software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#include <chainparams.h>
|
|
#include <init.h>
|
|
#include <netfulfilledman.h>
|
|
#include <util.h>
|
|
|
|
CNetFulfilledRequestManager netfulfilledman;
|
|
|
|
void CNetFulfilledRequestManager::AddFulfilledRequest(const CService& addr, const std::string& strRequest)
|
|
{
|
|
LOCK(cs_mapFulfilledRequests);
|
|
CService addrSquashed = Params().AllowMultiplePorts() ? addr : CService(addr, 0);
|
|
mapFulfilledRequests[addrSquashed][strRequest] = GetTime() + Params().FulfilledRequestExpireTime();
|
|
}
|
|
|
|
bool CNetFulfilledRequestManager::HasFulfilledRequest(const CService& addr, const std::string& strRequest)
|
|
{
|
|
LOCK(cs_mapFulfilledRequests);
|
|
CService addrSquashed = Params().AllowMultiplePorts() ? addr : CService(addr, 0);
|
|
fulfilledreqmap_t::iterator it = mapFulfilledRequests.find(addrSquashed);
|
|
|
|
return it != mapFulfilledRequests.end() &&
|
|
it->second.find(strRequest) != it->second.end() &&
|
|
it->second[strRequest] > GetTime();
|
|
}
|
|
|
|
void CNetFulfilledRequestManager::RemoveFulfilledRequest(const CService& addr, const std::string& strRequest)
|
|
{
|
|
LOCK(cs_mapFulfilledRequests);
|
|
CService addrSquashed = Params().AllowMultiplePorts() ? addr : CService(addr, 0);
|
|
fulfilledreqmap_t::iterator it = mapFulfilledRequests.find(addrSquashed);
|
|
|
|
if (it != mapFulfilledRequests.end()) {
|
|
it->second.erase(strRequest);
|
|
}
|
|
}
|
|
|
|
void CNetFulfilledRequestManager::RemoveAllFulfilledRequests(const CService& addr)
|
|
{
|
|
LOCK(cs_mapFulfilledRequests);
|
|
CService addrSquashed = Params().AllowMultiplePorts() ? addr : CService(addr, 0);
|
|
fulfilledreqmap_t::iterator it = mapFulfilledRequests.find(addrSquashed);
|
|
|
|
if (it != mapFulfilledRequests.end()) {
|
|
mapFulfilledRequests.erase(it++);
|
|
}
|
|
}
|
|
|
|
void CNetFulfilledRequestManager::CheckAndRemove()
|
|
{
|
|
LOCK(cs_mapFulfilledRequests);
|
|
|
|
int64_t now = GetTime();
|
|
fulfilledreqmap_t::iterator it = mapFulfilledRequests.begin();
|
|
|
|
while(it != mapFulfilledRequests.end()) {
|
|
fulfilledreqmapentry_t::iterator it_entry = it->second.begin();
|
|
while(it_entry != it->second.end()) {
|
|
if(now > it_entry->second) {
|
|
it->second.erase(it_entry++);
|
|
} else {
|
|
++it_entry;
|
|
}
|
|
}
|
|
if(it->second.size() == 0) {
|
|
mapFulfilledRequests.erase(it++);
|
|
} else {
|
|
++it;
|
|
}
|
|
}
|
|
}
|
|
|
|
void CNetFulfilledRequestManager::Clear()
|
|
{
|
|
LOCK(cs_mapFulfilledRequests);
|
|
mapFulfilledRequests.clear();
|
|
}
|
|
|
|
std::string CNetFulfilledRequestManager::ToString() const
|
|
{
|
|
std::ostringstream info;
|
|
info << "Nodes with fulfilled requests: " << (int)mapFulfilledRequests.size();
|
|
return info.str();
|
|
}
|
|
|
|
void CNetFulfilledRequestManager::DoMaintenance()
|
|
{
|
|
if (ShutdownRequested()) return;
|
|
|
|
CheckAndRemove();
|
|
}
|