fix: build errors, remove override, improve buffer

This commit is contained in:
jm-clius 2025-10-24 19:33:34 +01:00
parent 415dfbcd80
commit 56fc501925
No known key found for this signature in database
GPG Key ID: 5FCD9D5211B952DA
5 changed files with 14 additions and 17 deletions

View File

@ -1,4 +1,4 @@
import { HistoryEntry, Message, MessageId } from "./message.js";
import { HistoryEntry, Message, MessageId, ParticipantId } from "./message.js";
export enum MessageChannelEvent {
OutMessageSent = "sds:out:message-sent",

View File

@ -102,7 +102,7 @@ export class SyncMessage extends Message {
public lamportTimestamp: bigint,
public bloomFilter: Uint8Array<ArrayBufferLike> | undefined,
public content: undefined,
public override repairRequest: proto_sds_message.HistoryEntry[] = [],
public repairRequest: proto_sds_message.HistoryEntry[] = [],
/**
* Not encoded, set after it is sent, used to include in follow-up messages
*/
@ -148,7 +148,7 @@ export class EphemeralMessage extends Message {
public lamportTimestamp: undefined,
public bloomFilter: Uint8Array<ArrayBufferLike> | undefined,
public content: Uint8Array<ArrayBufferLike>,
public override repairRequest: proto_sds_message.HistoryEntry[] = [],
public repairRequest: proto_sds_message.HistoryEntry[] = [],
/**
* Not encoded, set after it is sent, used to include in follow-up messages
*/
@ -198,7 +198,7 @@ export class ContentMessage extends Message {
public lamportTimestamp: bigint,
public bloomFilter: Uint8Array<ArrayBufferLike> | undefined,
public content: Uint8Array<ArrayBufferLike>,
public override repairRequest: proto_sds_message.HistoryEntry[] = [],
public repairRequest: proto_sds_message.HistoryEntry[] = [],
/**
* Not encoded, set after it is sent, used to include in follow-up messages
*/

View File

@ -542,7 +542,7 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
}
// SDS-R: Handle received message in repair manager
this.repairManager.onMessageReceived(message.messageId);
this.repairManager.markMessageReceived(message.messageId);
// SDS-R: Process incoming repair requests
if (message.repairRequest && message.repairRequest.length > 0) {
@ -582,7 +582,7 @@ export class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
);
// SDS-R: Track missing dependencies in repair manager
this.repairManager.onMissingDependencies(missingDependencies);
this.repairManager.markDependenciesMissing(missingDependencies);
this.safeSendEvent(MessageChannelEvent.InMessageMissing, {
detail: Array.from(missingDependencies)

View File

@ -43,10 +43,7 @@ export class OutgoingRepairBuffer {
const messageId = entry.messageId;
// Check if already exists - do NOT update T_req per spec
const existingIndex = this.items.findIndex(
(item) => item.entry.messageId === messageId
);
if (existingIndex !== -1) {
if (this.has(messageId)) {
log.info(
`Message ${messageId} already in outgoing buffer, keeping original T_req`
);
@ -55,7 +52,7 @@ export class OutgoingRepairBuffer {
// Check buffer size limit
if (this.items.length >= this.maxSize) {
// Evict furthest T_req entry (last in sorted array) to preserve repairs that need to be sent the soonest
// Evict furthest T_req entry (last in sorted array) to preserve repairs that need to be sent the soonest
const evicted = this.items.pop()!;
log.warn(
`Buffer full, evicted furthest entry ${evicted.entry.messageId} with T_req ${evicted.tReq}`
@ -88,7 +85,10 @@ export class OutgoingRepairBuffer {
* Returns up to maxRequests entries from the front of the sorted array
* Marks returned entries as requested but keeps them in buffer until received
*/
public getEligible(currentTime: number = Date.now(), maxRequests = 3): HistoryEntry[] {
public getEligible(
currentTime: number = Date.now(),
maxRequests = 3
): HistoryEntry[] {
const eligible: HistoryEntry[] = [];
// Iterate from front of sorted array (earliest T_req first)
@ -176,10 +176,7 @@ export class IncomingRepairBuffer {
const messageId = entry.messageId;
// Check if already exists - ignore per spec
const existingIndex = this.items.findIndex(
(item) => item.entry.messageId === messageId
);
if (existingIndex !== -1) {
if (this.has(messageId)) {
log.info(`Message ${messageId} already in incoming buffer, ignoring`);
return false;
}

View File

@ -1,6 +1,6 @@
import { Logger } from "@waku/utils";
import type { HistoryEntry } from "../message.js";
import type { HistoryEntry, MessageId } from "../message.js";
import { Message } from "../message.js";
import type { ILocalHistory } from "../message_channel.js";