Skip to content

Commit 992bc9e

Browse files
committed
feat: Filtering Memory now supports capacities greater than 2147483647 #12
1 parent 4924182 commit 992bc9e

5 files changed

Lines changed: 244 additions & 124 deletions

File tree

src/BloomFilter/Configurations/FilterMemoryOptions.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.Collections;
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
24

35
namespace BloomFilter.Configurations;
46

@@ -27,20 +29,34 @@ public class FilterMemoryOptions
2729
/// <summary>
2830
/// Sets the bit value
2931
/// </summary>
32+
[Obsolete("Use Buckets")]
3033
public BitArray Bits { get; set; } = default!;
3134

3235
/// <summary>
3336
/// Sets more the bit value
3437
/// </summary>
38+
[Obsolete("Use Buckets")]
3539
public BitArray? BitsMore { get; set; }
3640

41+
/// <summary>
42+
/// Multiple bitmap
43+
/// </summary>
44+
public BitArray[]? Buckets { get; set; }
45+
3746
/// <summary>
3847
/// Sets the bit value
3948
/// </summary>
49+
[Obsolete("Use BucketBytes")]
4050
public byte[] Bytes { get; set; } = default!;
4151

4252
/// <summary>
4353
/// Sets more the bit value
4454
/// </summary>
55+
[Obsolete("Use BucketBytes")]
4556
public byte[]? BytesMore { get; set; }
57+
58+
/// <summary>
59+
/// Multiple bitmap from bytes
60+
/// </summary>
61+
public IList<byte[]>? BucketBytes { get; set; }
4662
}

src/BloomFilter/Filter.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ namespace BloomFilter;
1010
/// <seealso cref="IBloomFilter" />
1111
public abstract class Filter : IBloomFilter
1212
{
13+
//256MB
14+
protected const int MaxInt = 2147483647;
15+
1316
/// <summary>
1417
/// Gets the name specified by BloomFilter.
1518
/// </summary>
@@ -240,6 +243,18 @@ public override string ToString()
240243
return $"Capacity:{Capacity},Hashes:{Hashes},ExpectedElements:{ExpectedElements},ErrorRate:{ErrorRate}";
241244
}
242245

246+
protected static int LogMaxInt(long number, out int mod)
247+
{
248+
int result = 0;
249+
while (number > MaxInt)
250+
{
251+
number -= MaxInt;
252+
result++;
253+
}
254+
mod = (int)number;
255+
return result;
256+
}
257+
243258
/// <summary>
244259
/// Dispose
245260
/// </summary>

0 commit comments

Comments
 (0)