mirror of
https://github.com/logos-messaging/logos-messaging-js.git
synced 2026-01-25 03:13:11 +00:00
fix: bloom filter protobuf decoding (#2529)
* SDS: add bloom filter test * fix: ensure bloom filter can be decoded from protobuf
This commit is contained in:
parent
103f21ef85
commit
449797d5c1
@ -124,7 +124,7 @@ export class BloomFilter {
|
||||
hashN: (item: string, n: number, maxValue: number) => number
|
||||
): BloomFilter {
|
||||
const bloomFilter = new BloomFilter(options, hashN);
|
||||
const view = new DataView(bytes.buffer);
|
||||
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
||||
for (let i = 0; i < bloomFilter.data.length; i++) {
|
||||
bloomFilter.data[i] = view.getBigUint64(i * 8, false);
|
||||
}
|
||||
|
||||
33
packages/sds/src/message_channel/events.spec.ts
Normal file
33
packages/sds/src/message_channel/events.spec.ts
Normal file
@ -0,0 +1,33 @@
|
||||
import { expect } from "chai";
|
||||
|
||||
import { DefaultBloomFilter } from "../bloom_filter/bloom.js";
|
||||
|
||||
import { decodeMessage, encodeMessage, Message } from "./events.js";
|
||||
import { DEFAULT_BLOOM_FILTER_OPTIONS } from "./message_channel.js";
|
||||
|
||||
describe("Message serialization", () => {
|
||||
it("Bloom filter", () => {
|
||||
const messageId = "first";
|
||||
|
||||
const bloomFilter = new DefaultBloomFilter(DEFAULT_BLOOM_FILTER_OPTIONS);
|
||||
bloomFilter.insert(messageId);
|
||||
|
||||
const message: Message = {
|
||||
messageId: "123",
|
||||
channelId: "my-channel",
|
||||
causalHistory: [],
|
||||
lamportTimestamp: 0,
|
||||
bloomFilter: bloomFilter.toBytes()
|
||||
};
|
||||
|
||||
const bytes = encodeMessage(message);
|
||||
const decMessage = decodeMessage(bytes);
|
||||
|
||||
const decBloomFilter = DefaultBloomFilter.fromBytes(
|
||||
decMessage!.bloomFilter!,
|
||||
DEFAULT_BLOOM_FILTER_OPTIONS
|
||||
);
|
||||
|
||||
expect(decBloomFilter.lookup(messageId)).to.be.true;
|
||||
});
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user