BloomFilter.fromBytes constructor
BloomFilter.fromBytes(
- Uint8List data
Deserializes a Bloom filter from bytes.
The input should include the magic prefix (0xBF 0x00).
Returns BloomFilter.empty if the data is malformed.
Implementation
factory BloomFilter.fromBytes(Uint8List data) {
if (data.length < 7) return BloomFilter.empty();
// Verify magic
if (data[0] != kBloomFilterMagic[0] || data[1] != kBloomFilterMagic[1]) {
return BloomFilter.empty();
}
final header = ByteData.view(data.buffer, data.offsetInBytes, 7);
final bitCount = header.getUint32(2, Endian.little);
final hashCount = header.getUint8(6);
final expectedBytes = (bitCount + 7) ~/ 8;
if (data.length < 7 + expectedBytes) return BloomFilter.empty();
final bits = Uint8List.fromList(data.sublist(7, 7 + expectedBytes));
return BloomFilter._(
bits: bits,
bitCount: bitCount,
hashCount: hashCount,
);
}