mirror of
https://github.com/waku-org/js-waku.git
synced 2025-02-18 07:16:33 +00:00
chore: restructure reliabiltiy monitors
This commit is contained in:
parent
7ad1d321ca
commit
0fe48693c2
@ -14,9 +14,9 @@ export {
|
|||||||
defaultLibp2p,
|
defaultLibp2p,
|
||||||
createLibp2pAndUpdateOptions
|
createLibp2pAndUpdateOptions
|
||||||
} from "./create/index.js";
|
} from "./create/index.js";
|
||||||
export { wakuLightPush } from "./protocols/light_push.js";
|
export { wakuLightPush } from "./protocols/lightpush/index.js";
|
||||||
export { wakuFilter } from "./protocols/filter/index.js";
|
export { wakuFilter } from "./protocols/filter/index.js";
|
||||||
export { wakuStore } from "./protocols/store.js";
|
export { wakuStore } from "./protocols/store/index.js";
|
||||||
|
|
||||||
export * as waku from "@waku/core";
|
export * as waku from "@waku/core";
|
||||||
export * as utils from "@waku/utils";
|
export * as utils from "@waku/utils";
|
||||||
|
@ -20,11 +20,12 @@ import {
|
|||||||
import { WakuMessage } from "@waku/proto";
|
import { WakuMessage } from "@waku/proto";
|
||||||
import { groupByContentTopic, Logger } from "@waku/utils";
|
import { groupByContentTopic, Logger } from "@waku/utils";
|
||||||
|
|
||||||
import { DEFAULT_KEEP_ALIVE, DEFAULT_SUBSCRIBE_OPTIONS } from "./constants.js";
|
|
||||||
import {
|
import {
|
||||||
ReceiverReliabilityMonitor,
|
ReceiverReliabilityMonitor,
|
||||||
ReliabilityMonitorManager
|
ReliabilityMonitorManager
|
||||||
} from "./reliability_monitor.js";
|
} from "../../reliability_monitor/receiver.js";
|
||||||
|
|
||||||
|
import { DEFAULT_KEEP_ALIVE, DEFAULT_SUBSCRIBE_OPTIONS } from "./constants.js";
|
||||||
|
|
||||||
const log = new Logger("sdk:filter:subscription_manager");
|
const log = new Logger("sdk:filter:subscription_manager");
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import {
|
|||||||
} from "@waku/interfaces";
|
} from "@waku/interfaces";
|
||||||
import { ensurePubsubTopicIsConfigured, Logger } from "@waku/utils";
|
import { ensurePubsubTopicIsConfigured, Logger } from "@waku/utils";
|
||||||
|
|
||||||
import { BaseProtocolSDK } from "./base_protocol.js";
|
import { BaseProtocolSDK } from "../base_protocol.js";
|
||||||
|
|
||||||
const log = new Logger("sdk:light-push");
|
const log = new Logger("sdk:light-push");
|
||||||
|
|
@ -10,7 +10,7 @@ import {
|
|||||||
import { messageHash } from "@waku/message-hash";
|
import { messageHash } from "@waku/message-hash";
|
||||||
import { ensurePubsubTopicIsConfigured, isDefined, Logger } from "@waku/utils";
|
import { ensurePubsubTopicIsConfigured, isDefined, Logger } from "@waku/utils";
|
||||||
|
|
||||||
import { BaseProtocolSDK } from "./base_protocol.js";
|
import { BaseProtocolSDK } from "../base_protocol.js";
|
||||||
|
|
||||||
const DEFAULT_NUM_PEERS = 1;
|
const DEFAULT_NUM_PEERS = 1;
|
||||||
|
|
55
packages/sdk/src/reliability_monitor/index.ts
Normal file
55
packages/sdk/src/reliability_monitor/index.ts
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import type { Peer, PeerId } from "@libp2p/interface";
|
||||||
|
import {
|
||||||
|
ContentTopic,
|
||||||
|
CoreProtocolResult,
|
||||||
|
PubsubTopic
|
||||||
|
} from "@waku/interfaces";
|
||||||
|
|
||||||
|
import { ReceiverReliabilityMonitor } from "./receiver.js";
|
||||||
|
|
||||||
|
export class ReliabilityMonitorManager {
|
||||||
|
private static receiverMonitors: Map<
|
||||||
|
PubsubTopic,
|
||||||
|
ReceiverReliabilityMonitor
|
||||||
|
> = new Map();
|
||||||
|
|
||||||
|
public static createReceiverMonitor(
|
||||||
|
pubsubTopic: PubsubTopic,
|
||||||
|
getPeers: () => Peer[],
|
||||||
|
renewPeer: (peerId: PeerId) => Promise<Peer>,
|
||||||
|
getContentTopics: () => ContentTopic[],
|
||||||
|
protocolSubscribe: (
|
||||||
|
pubsubTopic: PubsubTopic,
|
||||||
|
peer: Peer,
|
||||||
|
contentTopics: ContentTopic[]
|
||||||
|
) => Promise<CoreProtocolResult>
|
||||||
|
): ReceiverReliabilityMonitor {
|
||||||
|
if (ReliabilityMonitorManager.receiverMonitors.has(pubsubTopic)) {
|
||||||
|
return ReliabilityMonitorManager.receiverMonitors.get(pubsubTopic)!;
|
||||||
|
}
|
||||||
|
|
||||||
|
const monitor = new ReceiverReliabilityMonitor(
|
||||||
|
pubsubTopic,
|
||||||
|
getPeers,
|
||||||
|
renewPeer,
|
||||||
|
getContentTopics,
|
||||||
|
protocolSubscribe
|
||||||
|
);
|
||||||
|
ReliabilityMonitorManager.receiverMonitors.set(pubsubTopic, monitor);
|
||||||
|
return monitor;
|
||||||
|
}
|
||||||
|
|
||||||
|
private constructor() {}
|
||||||
|
|
||||||
|
public static destroy(pubsubTopic: PubsubTopic): void {
|
||||||
|
this.receiverMonitors.delete(pubsubTopic);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static destroyAll(): void {
|
||||||
|
for (const [pubsubTopic, monitor] of this.receiverMonitors) {
|
||||||
|
monitor.setMaxMissedMessagesThreshold(undefined);
|
||||||
|
monitor.setMaxPingFailures(undefined);
|
||||||
|
this.receiverMonitors.delete(pubsubTopic);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -21,53 +21,6 @@ const log = new Logger("sdk:receiver:reliability_monitor");
|
|||||||
|
|
||||||
const DEFAULT_MAX_PINGS = 3;
|
const DEFAULT_MAX_PINGS = 3;
|
||||||
|
|
||||||
export class ReliabilityMonitorManager {
|
|
||||||
private static receiverMonitors: Map<
|
|
||||||
PubsubTopic,
|
|
||||||
ReceiverReliabilityMonitor
|
|
||||||
> = new Map();
|
|
||||||
|
|
||||||
public static createReceiverMonitor(
|
|
||||||
pubsubTopic: PubsubTopic,
|
|
||||||
getPeers: () => Peer[],
|
|
||||||
renewPeer: (peerId: PeerId) => Promise<Peer>,
|
|
||||||
getContentTopics: () => ContentTopic[],
|
|
||||||
protocolSubscribe: (
|
|
||||||
pubsubTopic: PubsubTopic,
|
|
||||||
peer: Peer,
|
|
||||||
contentTopics: ContentTopic[]
|
|
||||||
) => Promise<CoreProtocolResult>
|
|
||||||
): ReceiverReliabilityMonitor {
|
|
||||||
if (ReliabilityMonitorManager.receiverMonitors.has(pubsubTopic)) {
|
|
||||||
return ReliabilityMonitorManager.receiverMonitors.get(pubsubTopic)!;
|
|
||||||
}
|
|
||||||
|
|
||||||
const monitor = new ReceiverReliabilityMonitor(
|
|
||||||
pubsubTopic,
|
|
||||||
getPeers,
|
|
||||||
renewPeer,
|
|
||||||
getContentTopics,
|
|
||||||
protocolSubscribe
|
|
||||||
);
|
|
||||||
ReliabilityMonitorManager.receiverMonitors.set(pubsubTopic, monitor);
|
|
||||||
return monitor;
|
|
||||||
}
|
|
||||||
|
|
||||||
private constructor() {}
|
|
||||||
|
|
||||||
public static destroy(pubsubTopic: PubsubTopic): void {
|
|
||||||
this.receiverMonitors.delete(pubsubTopic);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static destroyAll(): void {
|
|
||||||
for (const [pubsubTopic, monitor] of this.receiverMonitors) {
|
|
||||||
monitor.setMaxMissedMessagesThreshold(undefined);
|
|
||||||
monitor.setMaxPingFailures(undefined);
|
|
||||||
this.receiverMonitors.delete(pubsubTopic);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class ReceiverReliabilityMonitor {
|
export class ReceiverReliabilityMonitor {
|
||||||
private receivedMessagesHashes: ReceivedMessageHashes;
|
private receivedMessagesHashes: ReceivedMessageHashes;
|
||||||
private missedMessagesByPeer: Map<string, number> = new Map();
|
private missedMessagesByPeer: Map<string, number> = new Map();
|
@ -17,9 +17,9 @@ import { Protocols } from "@waku/interfaces";
|
|||||||
import { Logger } from "@waku/utils";
|
import { Logger } from "@waku/utils";
|
||||||
|
|
||||||
import { wakuFilter } from "./protocols/filter/index.js";
|
import { wakuFilter } from "./protocols/filter/index.js";
|
||||||
import { ReliabilityMonitorManager } from "./protocols/filter/reliability_monitor.js";
|
import { wakuLightPush } from "./protocols/lightpush/index.js";
|
||||||
import { wakuLightPush } from "./protocols/light_push.js";
|
import { wakuStore } from "./protocols/store/index.js";
|
||||||
import { wakuStore } from "./protocols/store.js";
|
import { ReliabilityMonitorManager } from "./reliability_monitor/index.js";
|
||||||
|
|
||||||
export const DefaultPingKeepAliveValueSecs = 5 * 60;
|
export const DefaultPingKeepAliveValueSecs = 5 * 60;
|
||||||
export const DefaultRelayKeepAliveValueSecs = 5 * 60;
|
export const DefaultRelayKeepAliveValueSecs = 5 * 60;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user