Skip to content

Commit

Permalink
Add uint256 support to CRollingBloomFilter
Browse files Browse the repository at this point in the history
  • Loading branch information
petertodd authored and sipa committed Jul 27, 2015
1 parent 08e9c57 commit bbe4108
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/bloom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,20 @@ void CRollingBloomFilter::insert(const std::vector<unsigned char>& vKey)
}
}

void CRollingBloomFilter::insert(const uint256& hash)
{
if (nInsertions == 0) {
b1.clear();
} else if (nInsertions == nBloomSize / 2) {
b2.clear();
}
b1.insert(hash);
b2.insert(hash);
if (++nInsertions == nBloomSize) {
nInsertions = 0;
}
}

bool CRollingBloomFilter::contains(const std::vector<unsigned char>& vKey) const
{
if (nInsertions < nBloomSize / 2) {
Expand All @@ -242,6 +256,14 @@ bool CRollingBloomFilter::contains(const std::vector<unsigned char>& vKey) const
return b1.contains(vKey);
}

bool CRollingBloomFilter::contains(const uint256& hash) const
{
if (nInsertions < nBloomSize / 2) {
return b2.contains(hash);
}
return b1.contains(hash);
}

void CRollingBloomFilter::clear()
{
b1.clear();
Expand Down
2 changes: 2 additions & 0 deletions src/bloom.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,9 @@ class CRollingBloomFilter
CRollingBloomFilter(unsigned int nElements, double nFPRate, unsigned int nTweak);

void insert(const std::vector<unsigned char>& vKey);
void insert(const uint256& hash);
bool contains(const std::vector<unsigned char>& vKey) const;
bool contains(const uint256& hash) const;

void clear();

Expand Down

0 comments on commit bbe4108

Please sign in to comment.