Supression table.

This commit is contained in:
JoelKatz
2012-06-18 21:00:48 -07:00
parent 4f460736eb
commit 22302319f4
3 changed files with 75 additions and 0 deletions

37
src/Suppression.cpp Normal file
View File

@@ -0,0 +1,37 @@
#include "Suppression.h"
bool SuppressionTable::addSuppression(const uint160& suppression)
{
boost::mutex::scoped_lock sl(mSuppressionMutex);
if (mSuppressionMap.find(suppression) != mSuppressionMap.end())
return false;
time_t now = time(NULL);
boost::unordered_map< time_t, std::list<uint160> >::iterator it = mSuppressionTimes.begin();
while (it != mSuppressionTimes.end())
{
if ((it->first + mHoldTime) < now)
{
for (std::list<uint160>::iterator lit = it->second.begin(), end = it->second.end();
lit != end; ++lit)
mSuppressionMap.erase(*lit);
mSuppressionTimes.erase(it++);
}
else ++it;
}
mSuppressionMap[suppression] = now;
mSuppressionTimes[now].push_back(suppression);
return true;
}
bool SuppressionTable::addSuppression(const uint256& suppression)
{
uint160 u;
memcpy(u.begin(), suppression.begin() + (suppression.size() - u.size()), u.size());
return addSuppression(u);
}