31 auto it = mapFulfilledRequests.find(addr);
32 if (it != mapFulfilledRequests.end()) {
33 auto itReq = it->second.find(strRequest);
34 if (itReq != it->second.end()) {
35 return itReq->second >
GetTime();
41 static std::vector<unsigned char> convertElement(
const CService& addr,
const uint256& itemHash)
46 return {stream.
begin(), stream.end()};
53 itemsFilter->insert(convertElement(addr, itemHash));
61 return itemsFilter->contains(convertElement(addr, itemHash));
68 for (
auto it = mapFulfilledRequests.begin(); it != mapFulfilledRequests.end();) {
69 for (
auto it_entry = it->second.begin(); it_entry != it->second.end();) {
70 if (now > it_entry->second) {
71 it_entry = it->second.erase(it_entry);
76 if (it->second.empty()) {
77 it = mapFulfilledRequests.erase(it);
93 mapFulfilledRequests.clear();
99 std::ostringstream info;
100 info <<
"Nodes with fulfilled requests: " << (int)mapFulfilledRequests.size();
const CChainParams & Params()
Return the currently selected parameters.
int FulfilledRequestExpireTime() const
Tier two requests blockage mark expiration time.
std::vector< unsigned char > GetAddrBytes() const
Mutex cs_mapFulfilledRequests
void AddFulfilledRequest(const CService &addr, const std::string &strRequest)
CNetFulfilledRequestManager(unsigned int itemsFilterSize)
unsigned int itemsFilterSize
void AddItemRequest(const CService &addr, const uint256 &itemHash)
int64_t lastFilterCleanup
std::string ToString() const
bool HasFulfilledRequest(const CService &addr, const std::string &strRequest) const
bool HasItemRequest(const CService &addr, const uint256 &itemHash) const
int64_t filterCleanupTime
unsigned int itemsFilterCount
A combination of a network address (CNetAddr) and a (TCP) port.
CNetFulfilledRequestManager g_netfulfilledman(DEFAULT_ITEMS_FILTER_SIZE)
int64_t GetTime()
DEPRECATED Use either GetSystemTimeInSeconds (not mockable) or GetTime<T> (mockable)