mirror of
https://github.com/logos-messaging/js-waku.git
synced 2026-01-04 06:43:12 +00:00
chore: improve time compleixty for sweepIncomingBuffer
- O(n x h x m) to O(n x m)
This commit is contained in:
parent
e92f6a2409
commit
b75a4b06fb
@ -62,6 +62,7 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
|
|||||||
private possibleAcks: Map<MessageId, number>;
|
private possibleAcks: Map<MessageId, number>;
|
||||||
private incomingBuffer: Array<ContentMessage | SyncMessage>;
|
private incomingBuffer: Array<ContentMessage | SyncMessage>;
|
||||||
private readonly localHistory: ILocalHistory;
|
private readonly localHistory: ILocalHistory;
|
||||||
|
private localHistoryIndex: Set<MessageId>;
|
||||||
private timeReceived: Map<MessageId, number>;
|
private timeReceived: Map<MessageId, number>;
|
||||||
private readonly causalHistorySize: number;
|
private readonly causalHistorySize: number;
|
||||||
private readonly possibleAcksThreshold: number;
|
private readonly possibleAcksThreshold: number;
|
||||||
@ -102,6 +103,9 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
|
|||||||
this.possibleAcks = new Map();
|
this.possibleAcks = new Map();
|
||||||
this.incomingBuffer = [];
|
this.incomingBuffer = [];
|
||||||
this.localHistory = localHistory;
|
this.localHistory = localHistory;
|
||||||
|
this.localHistoryIndex = new Set(
|
||||||
|
localHistory.slice(0).map((msg) => msg.messageId)
|
||||||
|
);
|
||||||
this.causalHistorySize =
|
this.causalHistorySize =
|
||||||
options.causalHistorySize ?? DEFAULT_CAUSAL_HISTORY_SIZE;
|
options.causalHistorySize ?? DEFAULT_CAUSAL_HISTORY_SIZE;
|
||||||
// TODO: this should be determined based on the bloom filter parameters and number of hashes
|
// TODO: this should be determined based on the bloom filter parameters and number of hashes
|
||||||
@ -272,9 +276,7 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
|
|||||||
);
|
);
|
||||||
const missingDependencies = message.causalHistory.filter(
|
const missingDependencies = message.causalHistory.filter(
|
||||||
(messageHistoryEntry) =>
|
(messageHistoryEntry) =>
|
||||||
!this.localHistory.some(
|
!this.localHistoryIndex.has(messageHistoryEntry.messageId)
|
||||||
({ messageId }) => messageId === messageHistoryEntry.messageId
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
if (missingDependencies.length === 0) {
|
if (missingDependencies.length === 0) {
|
||||||
if (isContentMessage(message) && this.deliverMessage(message)) {
|
if (isContentMessage(message) && this.deliverMessage(message)) {
|
||||||
@ -471,9 +473,7 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
|
|||||||
|
|
||||||
const missingDependencies = message.causalHistory.filter(
|
const missingDependencies = message.causalHistory.filter(
|
||||||
(messageHistoryEntry) =>
|
(messageHistoryEntry) =>
|
||||||
!this.localHistory.some(
|
!this.localHistoryIndex.has(messageHistoryEntry.messageId)
|
||||||
({ messageId }) => messageId === messageHistoryEntry.messageId
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (missingDependencies.length > 0) {
|
if (missingDependencies.length > 0) {
|
||||||
@ -577,6 +577,7 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
|
|||||||
message.retrievalHint = retrievalHint;
|
message.retrievalHint = retrievalHint;
|
||||||
this.filter.insert(messageId);
|
this.filter.insert(messageId);
|
||||||
this.localHistory.push(message);
|
this.localHistory.push(message);
|
||||||
|
this.localHistoryIndex.add(messageId);
|
||||||
this.timeReceived.set(messageId, Date.now());
|
this.timeReceived.set(messageId, Date.now());
|
||||||
this.safeSendEvent(MessageChannelEvent.OutMessageSent, {
|
this.safeSendEvent(MessageChannelEvent.OutMessageSent, {
|
||||||
detail: message
|
detail: message
|
||||||
@ -657,6 +658,7 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.localHistory.push(message);
|
this.localHistory.push(message);
|
||||||
|
this.localHistoryIndex.add(message.messageId);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user