public bool Equals(SimpleBloomFilter <T> other) { return(_k == other._k && _bitArraySize == other._bitArraySize && ExpectedElements == other.ExpectedElements && BitArray.Equals2(other.BitArray)); }
public DigestResult(SimpleBloomFilter <Number160> contentBloomFilter, SimpleBloomFilter <Number160> versionBloomFilter) { ContentBloomFilter = contentBloomFilter; VersionBloomFilter = versionBloomFilter; KeyDigest = null; DataMap = null; }
/// <summary> /// Searches for multiple content keys. There may be false positives. /// </summary> /// <param name="locationKey">The location key.</param> /// <param name="domainKey">The domain key.</param> /// <param name="keyBloomFilter">For Get() and Remove() one can provide a bloom filter of /// content keys and the remote peer indicates if those keys are on that peer.</param> public SearchValues(Number160 locationKey, Number160 domainKey, SimpleBloomFilter <Number160> keyBloomFilter) { LocationKey = locationKey; DomainKey = domainKey; ContentKey = null; KeyBloomFilter = keyBloomFilter; ContentBloomFilter = null; From = null; To = null; }
/// <summary> /// Merges this bloom filter with the provided one using OR. /// </summary> /// <param name="toMerge"></param> /// <returns>A new bloom filter that contains both sets.</returns> public SimpleBloomFilter <T> Merge(SimpleBloomFilter <T> toMerge) { if (toMerge._bitArraySize != _bitArraySize) { throw new SystemException("The two bloomfilters must have the same size."); } var mergedBitArray = (BitArray)BitArray.Clone(); mergedBitArray.Or(toMerge.BitArray); return(new SimpleBloomFilter <T>(_bitArraySize, ExpectedElements, mergedBitArray)); }