@peerbit/pubsub 4.1.4 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -20
- package/dist/benchmark/fanout-tree-sim-lib.d.ts +201 -0
- package/dist/benchmark/fanout-tree-sim-lib.d.ts.map +1 -0
- package/dist/benchmark/fanout-tree-sim-lib.js +1225 -0
- package/dist/benchmark/fanout-tree-sim-lib.js.map +1 -0
- package/dist/benchmark/fanout-tree-sim.d.ts +11 -0
- package/dist/benchmark/fanout-tree-sim.d.ts.map +1 -0
- package/dist/benchmark/fanout-tree-sim.js +521 -0
- package/dist/benchmark/fanout-tree-sim.js.map +1 -0
- package/dist/benchmark/index.d.ts +6 -0
- package/dist/benchmark/index.d.ts.map +1 -1
- package/dist/benchmark/index.js +38 -80
- package/dist/benchmark/index.js.map +1 -1
- package/dist/benchmark/pubsub-topic-sim-lib.d.ts +82 -0
- package/dist/benchmark/pubsub-topic-sim-lib.d.ts.map +1 -0
- package/dist/benchmark/pubsub-topic-sim-lib.js +625 -0
- package/dist/benchmark/pubsub-topic-sim-lib.js.map +1 -0
- package/dist/benchmark/pubsub-topic-sim.d.ts +9 -0
- package/dist/benchmark/pubsub-topic-sim.d.ts.map +1 -0
- package/dist/benchmark/pubsub-topic-sim.js +116 -0
- package/dist/benchmark/pubsub-topic-sim.js.map +1 -0
- package/dist/benchmark/sim/bench-utils.d.ts +25 -0
- package/dist/benchmark/sim/bench-utils.d.ts.map +1 -0
- package/dist/benchmark/sim/bench-utils.js +141 -0
- package/dist/benchmark/sim/bench-utils.js.map +1 -0
- package/dist/src/fanout-channel.d.ts +62 -0
- package/dist/src/fanout-channel.d.ts.map +1 -0
- package/dist/src/fanout-channel.js +114 -0
- package/dist/src/fanout-channel.js.map +1 -0
- package/dist/src/fanout-tree.d.ts +551 -0
- package/dist/src/fanout-tree.d.ts.map +1 -0
- package/dist/src/fanout-tree.js +4980 -0
- package/dist/src/fanout-tree.js.map +1 -0
- package/dist/src/index.d.ts +168 -39
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1416 -457
- package/dist/src/index.js.map +1 -1
- package/dist/src/topic-root-control-plane.d.ts +43 -0
- package/dist/src/topic-root-control-plane.d.ts.map +1 -0
- package/dist/src/topic-root-control-plane.js +120 -0
- package/dist/src/topic-root-control-plane.js.map +1 -0
- package/package.json +8 -7
- package/src/fanout-channel.ts +150 -0
- package/src/fanout-tree.ts +6346 -0
- package/src/index.ts +1693 -591
- package/src/topic-root-control-plane.ts +160 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubsub-topic-sim-lib.js","sourceRoot":"","sources":["../../benchmark/pubsub-topic-sim-lib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory TopicControlPlane simulator (1 writer -> many subscribers).
|
|
3
|
+
*
|
|
4
|
+
* Goal: stress the real @peerbit/pubsub + @peerbit/stream code paths (routing,
|
|
5
|
+
* ACK learning, backpressure/lanes, dialer/pruner) while avoiding real sockets
|
|
6
|
+
* and heavy crypto costs.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=pubsub-topic-sim.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubsub-topic-sim.d.ts","sourceRoot":"","sources":["../../benchmark/pubsub-topic-sim.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory TopicControlPlane simulator (1 writer -> many subscribers).
|
|
3
|
+
*
|
|
4
|
+
* Goal: stress the real @peerbit/pubsub + @peerbit/stream code paths (routing,
|
|
5
|
+
* ACK learning, backpressure/lanes, dialer/pruner) while avoiding real sockets
|
|
6
|
+
* and heavy crypto costs.
|
|
7
|
+
*/
|
|
8
|
+
import { formatPubsubTopicSimResult, resolvePubsubTopicSimParams, runPubsubTopicSim, } from "./pubsub-topic-sim-lib.js";
|
|
9
|
+
const parseArgs = (argv) => {
|
|
10
|
+
const get = (key) => {
|
|
11
|
+
const idx = argv.indexOf(key);
|
|
12
|
+
if (idx === -1)
|
|
13
|
+
return undefined;
|
|
14
|
+
return argv[idx + 1];
|
|
15
|
+
};
|
|
16
|
+
const has = (key) => argv.includes(key);
|
|
17
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
18
|
+
console.log([
|
|
19
|
+
"pubsub-topic-sim.ts",
|
|
20
|
+
"",
|
|
21
|
+
"Args:",
|
|
22
|
+
" --nodes N total nodes (default: 2000)",
|
|
23
|
+
" --degree K target undirected degree (default: 6)",
|
|
24
|
+
" --writerIndex I writer node index (default: 0)",
|
|
25
|
+
" --fanoutTopic 0|1 use fanout-backed topic delivery (default: 0)",
|
|
26
|
+
" --fanoutRootIndex I fanout root node index (default: writerIndex)",
|
|
27
|
+
" --subscribers N number of subscribers (default: nodes-1)",
|
|
28
|
+
" --messages M messages to publish (default: 200)",
|
|
29
|
+
" --msgSize BYTES payload bytes (default: 1024)",
|
|
30
|
+
" --intervalMs MS delay between publishes (default: 0)",
|
|
31
|
+
" --strict 0|1 alias for --silent (default: 0)",
|
|
32
|
+
" --silent 0|1 publish with SilentDelivery (default: 0)",
|
|
33
|
+
" --redundancy R stream redundancy (default: 2)",
|
|
34
|
+
" --seed S RNG seed (default: 1)",
|
|
35
|
+
" --topic NAME topic name (default: concert)",
|
|
36
|
+
" --subscribeModel real|preseed (default: preseed)",
|
|
37
|
+
" --subscriptionDebounceDelayMs MS (default: 0)",
|
|
38
|
+
" --warmupMs MS warmup delay before measuring (default: 0)",
|
|
39
|
+
" --warmupMessages N warmup messages before measuring (default: 0)",
|
|
40
|
+
" --settleMs MS time to wait for delivery after publish (default: 200)",
|
|
41
|
+
" --timeoutMs MS global timeout (default: 300000)",
|
|
42
|
+
" --dialConcurrency N dial concurrency (default: 256)",
|
|
43
|
+
" --dialer 0|1 enable stream autodial (default: 0)",
|
|
44
|
+
" --pruner 0|1 enable stream pruning (default: 0)",
|
|
45
|
+
" --prunerIntervalMs MS (default: 50)",
|
|
46
|
+
" --prunerMaxBufferBytes BYTES (default: 65536)",
|
|
47
|
+
" --dialDelayMs MS artificial dial delay (default: 0)",
|
|
48
|
+
" --streamRxDelayMs MS per-chunk inbound delay in shim (default: 0)",
|
|
49
|
+
" --streamHighWaterMarkBytes B backpressure threshold (default: 262144)",
|
|
50
|
+
" --dropDataFrameRate P drop rate for stream data frames (default: 0)",
|
|
51
|
+
" --maxLatencySamples N reservoir sample size (default: 1000000)",
|
|
52
|
+
" --churnEveryMs MS churn interval (default: 0, off)",
|
|
53
|
+
" --churnDownMs MS offline duration per churn (default: 0, off)",
|
|
54
|
+
" --churnFraction F fraction to churn per event (default: 0, off)",
|
|
55
|
+
" --churnRedialIntervalMs MS graph redial tick (default: 50)",
|
|
56
|
+
" --churnRedialConcurrency N redial concurrency (default: 128)",
|
|
57
|
+
"",
|
|
58
|
+
"Examples:",
|
|
59
|
+
" pnpm -C packages/transport/pubsub run bench -- topic-sim --nodes 3 --degree 2 --subscribers 2 --messages 5 --msgSize 32 --intervalMs 0 --seed 1 --subscribeModel preseed",
|
|
60
|
+
" pnpm -C packages/transport/pubsub run bench -- topic-sim --nodes 2000 --degree 6 --subscribers 1500 --messages 200 --msgSize 1024 --intervalMs 0 --seed 1 --subscribeModel preseed",
|
|
61
|
+
].join("\n"));
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
const nodes = Number(get("--nodes") ?? 2000);
|
|
65
|
+
const strict = has("--strict") ? String(get("--strict") ?? "0") === "1" : undefined;
|
|
66
|
+
const silent = has("--silent") ? String(get("--silent") ?? "0") === "1" : undefined;
|
|
67
|
+
return resolvePubsubTopicSimParams({
|
|
68
|
+
nodes,
|
|
69
|
+
degree: Number(get("--degree") ?? 6),
|
|
70
|
+
writerIndex: Number(get("--writerIndex") ?? 0),
|
|
71
|
+
fanoutTopic: String(get("--fanoutTopic") ?? "0") === "1",
|
|
72
|
+
fanoutRootIndex: Number(get("--fanoutRootIndex") ?? Number(get("--writerIndex") ?? 0)),
|
|
73
|
+
subscribers: Number(get("--subscribers") ?? nodes - 1),
|
|
74
|
+
messages: Number(get("--messages") ?? 200),
|
|
75
|
+
msgSize: Number(get("--msgSize") ?? 1024),
|
|
76
|
+
intervalMs: Number(get("--intervalMs") ?? 0),
|
|
77
|
+
silent: silent ?? strict ?? false,
|
|
78
|
+
redundancy: Number(get("--redundancy") ?? 2),
|
|
79
|
+
seed: Number(get("--seed") ?? 1),
|
|
80
|
+
topic: String(get("--topic") ?? "concert"),
|
|
81
|
+
subscribeModel: String(get("--subscribeModel") ?? "preseed") ?? "preseed",
|
|
82
|
+
subscriptionDebounceDelayMs: Number(get("--subscriptionDebounceDelayMs") ?? 0),
|
|
83
|
+
warmupMs: Number(get("--warmupMs") ?? 0),
|
|
84
|
+
warmupMessages: Number(get("--warmupMessages") ?? 0),
|
|
85
|
+
settleMs: Number(get("--settleMs") ?? 200),
|
|
86
|
+
timeoutMs: Number(get("--timeoutMs") ?? 300_000),
|
|
87
|
+
dialConcurrency: Number(get("--dialConcurrency") ?? 256),
|
|
88
|
+
dialer: String(get("--dialer") ?? "0") === "1",
|
|
89
|
+
pruner: String(get("--pruner") ?? "0") === "1",
|
|
90
|
+
prunerIntervalMs: Number(get("--prunerIntervalMs") ?? 50),
|
|
91
|
+
prunerMaxBufferBytes: Number(get("--prunerMaxBufferBytes") ?? 64 * 1024),
|
|
92
|
+
dialDelayMs: Number(get("--dialDelayMs") ?? 0),
|
|
93
|
+
streamRxDelayMs: Number(get("--streamRxDelayMs") ?? 0),
|
|
94
|
+
streamHighWaterMarkBytes: Number(get("--streamHighWaterMarkBytes") ?? 256 * 1024),
|
|
95
|
+
dropDataFrameRate: Number(get("--dropDataFrameRate") ?? 0),
|
|
96
|
+
maxLatencySamples: Number(get("--maxLatencySamples") ?? 1_000_000),
|
|
97
|
+
churnEveryMs: Number(get("--churnEveryMs") ?? 0),
|
|
98
|
+
churnDownMs: Number(get("--churnDownMs") ?? 0),
|
|
99
|
+
churnFraction: Number(get("--churnFraction") ?? 0),
|
|
100
|
+
churnRedialIntervalMs: Number(get("--churnRedialIntervalMs") ?? 50),
|
|
101
|
+
churnRedialConcurrency: Number(get("--churnRedialConcurrency") ?? 128),
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
const main = async () => {
|
|
105
|
+
const params = parseArgs(process.argv.slice(2));
|
|
106
|
+
const result = await runPubsubTopicSim(params);
|
|
107
|
+
console.log(formatPubsubTopicSimResult(result));
|
|
108
|
+
};
|
|
109
|
+
try {
|
|
110
|
+
await main();
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
console.error(e?.message ?? e);
|
|
114
|
+
process.exit(String(e?.message ?? "").includes("timed out") ? 124 : 1);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=pubsub-topic-sim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubsub-topic-sim.js","sourceRoot":"","sources":["../../benchmark/pubsub-topic-sim.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const BENCH_ID_PREFIX: Uint8Array<ArrayBuffer>;
|
|
2
|
+
export declare const isBenchId: (id: Uint8Array) => boolean;
|
|
3
|
+
export declare const writeU32BE: (buf: Uint8Array, offset: number, value: number) => void;
|
|
4
|
+
export declare const readU32BE: (buf: Uint8Array, offset: number) => number;
|
|
5
|
+
export declare const mulberry32: (seed: number) => () => number;
|
|
6
|
+
export declare const int: (rng: () => number, maxExclusive: number) => number;
|
|
7
|
+
export declare const quantile: (sorted: number[], q: number) => number;
|
|
8
|
+
export declare const buildRandomGraph: (n: number, targetDegree: number, rng: () => number) => number[][];
|
|
9
|
+
export declare const runWithConcurrency: <T>(tasks: Array<() => Promise<T>>, concurrency: number) => Promise<T[]>;
|
|
10
|
+
type ProtocolNode = {
|
|
11
|
+
multicodecs: string[];
|
|
12
|
+
components: {
|
|
13
|
+
connectionManager: {
|
|
14
|
+
getConnections: () => Array<{
|
|
15
|
+
streams: Array<{
|
|
16
|
+
protocol?: string;
|
|
17
|
+
direction?: string;
|
|
18
|
+
}>;
|
|
19
|
+
}>;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export declare const waitForProtocolStreams: (nodes: ProtocolNode[], timeoutMs?: number) => Promise<void>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=bench-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bench-utils.d.ts","sourceRoot":"","sources":["../../../benchmark/sim/bench-utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,yBAA4C,CAAC;AAEzE,eAAO,MAAM,SAAS,GAAI,IAAI,UAAU,YAKX,CAAC;AAE9B,eAAO,MAAM,UAAU,GAAI,KAAK,UAAU,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,SAKxE,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,UAAU,EAAE,QAAQ,MAAM,WAIjC,CAAC;AAEzB,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,iBAStC,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,MAAM,EAAE,cAAc,MAAM,WAC1B,CAAC;AAElC,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,EAAE,GAAG,MAAM,WAOnD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC5B,GAAG,MAAM,EACT,cAAc,MAAM,EACpB,KAAK,MAAM,MAAM,KACf,MAAM,EAAE,EA4DV,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,CAAC,EACzC,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAC9B,aAAa,MAAM,KACjB,OAAO,CAAC,CAAC,EAAE,CAYb,CAAC;AAEF,KAAK,YAAY,GAAG;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE;QACX,iBAAiB,EAAE;YAClB,cAAc,EAAE,MAAM,KAAK,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC;oBAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;oBAAC,SAAS,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAC,CAAC;aAC1D,CAAC,CAAC;SACH,CAAC;KACF,CAAC;CACF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAClC,OAAO,YAAY,EAAE,EACrB,kBAAkB,kBA+BlB,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { delay } from "@peerbit/time";
|
|
2
|
+
export const BENCH_ID_PREFIX = Uint8Array.from([0x50, 0x53, 0x49, 0x4d]); // "PSIM"
|
|
3
|
+
export const isBenchId = (id) => id.length === 32 &&
|
|
4
|
+
id[0] === BENCH_ID_PREFIX[0] &&
|
|
5
|
+
id[1] === BENCH_ID_PREFIX[1] &&
|
|
6
|
+
id[2] === BENCH_ID_PREFIX[2] &&
|
|
7
|
+
id[3] === BENCH_ID_PREFIX[3];
|
|
8
|
+
export const writeU32BE = (buf, offset, value) => {
|
|
9
|
+
buf[offset + 0] = (value >>> 24) & 0xff;
|
|
10
|
+
buf[offset + 1] = (value >>> 16) & 0xff;
|
|
11
|
+
buf[offset + 2] = (value >>> 8) & 0xff;
|
|
12
|
+
buf[offset + 3] = value & 0xff;
|
|
13
|
+
};
|
|
14
|
+
export const readU32BE = (buf, offset) => ((buf[offset + 0] << 24) |
|
|
15
|
+
(buf[offset + 1] << 16) |
|
|
16
|
+
(buf[offset + 2] << 8) |
|
|
17
|
+
buf[offset + 3]) >>> 0;
|
|
18
|
+
export const mulberry32 = (seed) => {
|
|
19
|
+
let t = seed >>> 0;
|
|
20
|
+
return () => {
|
|
21
|
+
t += 0x6d2b79f5;
|
|
22
|
+
let x = t;
|
|
23
|
+
x = Math.imul(x ^ (x >>> 15), x | 1);
|
|
24
|
+
x ^= x + Math.imul(x ^ (x >>> 7), x | 61);
|
|
25
|
+
return ((x ^ (x >>> 14)) >>> 0) / 4294967296;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export const int = (rng, maxExclusive) => Math.floor(rng() * maxExclusive);
|
|
29
|
+
export const quantile = (sorted, q) => {
|
|
30
|
+
if (sorted.length === 0)
|
|
31
|
+
return NaN;
|
|
32
|
+
const idx = Math.min(sorted.length - 1, Math.max(0, Math.floor(q * (sorted.length - 1))));
|
|
33
|
+
return sorted[idx];
|
|
34
|
+
};
|
|
35
|
+
export const buildRandomGraph = (n, targetDegree, rng) => {
|
|
36
|
+
if (n <= 0)
|
|
37
|
+
throw new Error("nodes must be > 0");
|
|
38
|
+
if (targetDegree < 0)
|
|
39
|
+
throw new Error("degree must be >= 0");
|
|
40
|
+
if (targetDegree >= n) {
|
|
41
|
+
throw new Error("degree must be < nodes for a simple graph");
|
|
42
|
+
}
|
|
43
|
+
const adj = Array.from({ length: n }, () => new Set());
|
|
44
|
+
const degree = new Uint16Array(n);
|
|
45
|
+
const connect = (a, b) => {
|
|
46
|
+
if (a === b)
|
|
47
|
+
return false;
|
|
48
|
+
if (adj[a].has(b))
|
|
49
|
+
return false;
|
|
50
|
+
if (degree[a] >= targetDegree || degree[b] >= targetDegree)
|
|
51
|
+
return false;
|
|
52
|
+
adj[a].add(b);
|
|
53
|
+
adj[b].add(a);
|
|
54
|
+
degree[a] += 1;
|
|
55
|
+
degree[b] += 1;
|
|
56
|
+
return true;
|
|
57
|
+
};
|
|
58
|
+
// Seed connectivity.
|
|
59
|
+
if (targetDegree >= 2 && n >= 3) {
|
|
60
|
+
for (let i = 0; i < n; i++)
|
|
61
|
+
connect(i, (i + 1) % n);
|
|
62
|
+
}
|
|
63
|
+
else if (targetDegree >= 1 && n >= 2) {
|
|
64
|
+
for (let i = 0; i < n - 1; i++)
|
|
65
|
+
connect(i, i + 1);
|
|
66
|
+
}
|
|
67
|
+
const available = [];
|
|
68
|
+
const pos = new Int32Array(n).fill(-1);
|
|
69
|
+
for (let i = 0; i < n; i++) {
|
|
70
|
+
if (degree[i] < targetDegree) {
|
|
71
|
+
pos[i] = available.length;
|
|
72
|
+
available.push(i);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const removeAvailable = (id) => {
|
|
76
|
+
const p = pos[id];
|
|
77
|
+
if (p < 0)
|
|
78
|
+
return;
|
|
79
|
+
const last = available.pop();
|
|
80
|
+
if (last !== id) {
|
|
81
|
+
available[p] = last;
|
|
82
|
+
pos[last] = p;
|
|
83
|
+
}
|
|
84
|
+
pos[id] = -1;
|
|
85
|
+
};
|
|
86
|
+
const maxAttempts = n * Math.max(1, targetDegree) * 200;
|
|
87
|
+
let attempts = 0;
|
|
88
|
+
while (available.length > 1 && attempts < maxAttempts) {
|
|
89
|
+
attempts++;
|
|
90
|
+
const a = available[int(rng, available.length)];
|
|
91
|
+
const b = available[int(rng, available.length)];
|
|
92
|
+
if (a === b)
|
|
93
|
+
continue;
|
|
94
|
+
if (!connect(a, b))
|
|
95
|
+
continue;
|
|
96
|
+
if (degree[a] >= targetDegree)
|
|
97
|
+
removeAvailable(a);
|
|
98
|
+
if (degree[b] >= targetDegree)
|
|
99
|
+
removeAvailable(b);
|
|
100
|
+
}
|
|
101
|
+
return adj.map((s) => [...s]);
|
|
102
|
+
};
|
|
103
|
+
export const runWithConcurrency = async (tasks, concurrency) => {
|
|
104
|
+
const results = new Array(tasks.length);
|
|
105
|
+
let index = 0;
|
|
106
|
+
const workers = Array.from({ length: Math.max(1, concurrency) }, async () => {
|
|
107
|
+
for (;;) {
|
|
108
|
+
const i = index++;
|
|
109
|
+
if (i >= tasks.length)
|
|
110
|
+
return;
|
|
111
|
+
results[i] = await tasks[i]();
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
await Promise.all(workers);
|
|
115
|
+
return results;
|
|
116
|
+
};
|
|
117
|
+
export const waitForProtocolStreams = async (nodes, timeoutMs = 30_000) => {
|
|
118
|
+
const start = Date.now();
|
|
119
|
+
while (Date.now() - start < timeoutMs) {
|
|
120
|
+
let missing = 0;
|
|
121
|
+
for (const node of nodes) {
|
|
122
|
+
const protocols = node.multicodecs;
|
|
123
|
+
for (const conn of node.components.connectionManager.getConnections()) {
|
|
124
|
+
const streams = conn.streams;
|
|
125
|
+
const hasOutbound = streams.some((s) => s.protocol &&
|
|
126
|
+
protocols.includes(s.protocol) &&
|
|
127
|
+
s.direction === "outbound");
|
|
128
|
+
const hasInbound = streams.some((s) => s.protocol &&
|
|
129
|
+
protocols.includes(s.protocol) &&
|
|
130
|
+
s.direction === "inbound");
|
|
131
|
+
if (!hasOutbound || !hasInbound)
|
|
132
|
+
missing++;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (missing === 0)
|
|
136
|
+
return;
|
|
137
|
+
await delay(0);
|
|
138
|
+
}
|
|
139
|
+
throw new Error("Timeout waiting for protocol streams to become duplex");
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=bench-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bench-utils.js","sourceRoot":"","sources":["../../../benchmark/sim/bench-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { FanoutTree, FanoutTreeChannelOptions, FanoutTreeDataEvent, FanoutTreeJoinOptions, FanoutTreeUnicastEvent } from "./fanout-tree.js";
|
|
2
|
+
export interface FanoutChannelEvents {
|
|
3
|
+
data: CustomEvent<FanoutTreeDataEvent>;
|
|
4
|
+
unicast: CustomEvent<FanoutTreeUnicastEvent>;
|
|
5
|
+
joined: CustomEvent<{
|
|
6
|
+
topic: string;
|
|
7
|
+
root: string;
|
|
8
|
+
parent: string;
|
|
9
|
+
}>;
|
|
10
|
+
kicked: CustomEvent<{
|
|
11
|
+
topic: string;
|
|
12
|
+
root: string;
|
|
13
|
+
from: string;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare class FanoutChannel extends EventTarget {
|
|
17
|
+
private readonly fanout;
|
|
18
|
+
readonly root: string;
|
|
19
|
+
readonly topic: string;
|
|
20
|
+
private listening;
|
|
21
|
+
private readonly onData;
|
|
22
|
+
private readonly onUnicast;
|
|
23
|
+
private readonly onJoined;
|
|
24
|
+
private readonly onKicked;
|
|
25
|
+
constructor(fanout: FanoutTree, opts: {
|
|
26
|
+
topic: string;
|
|
27
|
+
root: string;
|
|
28
|
+
});
|
|
29
|
+
static fromSelf(fanout: FanoutTree, topic: string): FanoutChannel;
|
|
30
|
+
private ensureListening;
|
|
31
|
+
close(): void;
|
|
32
|
+
leave(options?: {
|
|
33
|
+
notifyParent?: boolean;
|
|
34
|
+
kickChildren?: boolean;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
openAsRoot(options: Omit<FanoutTreeChannelOptions, "role">): import("./fanout-tree.js").FanoutTreeChannelId;
|
|
37
|
+
join(options: Omit<FanoutTreeChannelOptions, "role">, joinOpts?: FanoutTreeJoinOptions): Promise<void>;
|
|
38
|
+
publish(payload: Uint8Array): Promise<void>;
|
|
39
|
+
getPeerHashes(options?: {
|
|
40
|
+
includeSelf?: boolean;
|
|
41
|
+
}): string[];
|
|
42
|
+
getRouteToken(): string[];
|
|
43
|
+
resolveRouteToken(targetHash: string, options?: {
|
|
44
|
+
timeoutMs?: number;
|
|
45
|
+
signal?: AbortSignal;
|
|
46
|
+
}): Promise<string[]>;
|
|
47
|
+
unicast(toRoute: string[], payload: Uint8Array): Promise<void>;
|
|
48
|
+
unicastTo(targetHash: string, payload: Uint8Array, options?: {
|
|
49
|
+
timeoutMs?: number;
|
|
50
|
+
signal?: AbortSignal;
|
|
51
|
+
}): Promise<void>;
|
|
52
|
+
unicastAck(toRoute: string[], payload: Uint8Array, options?: {
|
|
53
|
+
timeoutMs?: number;
|
|
54
|
+
signal?: AbortSignal;
|
|
55
|
+
}): Promise<void>;
|
|
56
|
+
unicastToAck(targetHash: string, payload: Uint8Array, options?: {
|
|
57
|
+
timeoutMs?: number;
|
|
58
|
+
signal?: AbortSignal;
|
|
59
|
+
}): Promise<void>;
|
|
60
|
+
end(lastSeqExclusive: number): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=fanout-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanout-channel.d.ts","sourceRoot":"","sources":["../../src/fanout-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACvC,OAAO,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC7C,MAAM,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,MAAM,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED,qBAAa,aAAc,SAAQ,WAAW;IAmC5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAlCxB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAMrB;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAMxB;IACF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAMvB;IACF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAMvB;gBAGgB,MAAM,EAAE,UAAU,EACnC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAOtC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa;IAIjE,OAAO,CAAC,eAAe;IAShB,KAAK;IASC,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE;IAKxE,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAK1D,IAAI,CACV,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAC/C,QAAQ,CAAC,EAAE,qBAAqB;IAM1B,OAAO,CAAC,OAAO,EAAE,UAAU;IAI3B,aAAa,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;IAIjD,aAAa;IAIb,iBAAiB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;IAKhD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU;IAI9C,SAAS,CACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;IAKhD,UAAU,CAChB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;IAMhD,YAAY,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;IAKhD,GAAG,CAAC,gBAAgB,EAAE,MAAM;CAGnC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export class FanoutChannel extends EventTarget {
|
|
2
|
+
fanout;
|
|
3
|
+
root;
|
|
4
|
+
topic;
|
|
5
|
+
listening = false;
|
|
6
|
+
onData = (ev) => {
|
|
7
|
+
const d = ev?.detail;
|
|
8
|
+
if (!d)
|
|
9
|
+
return;
|
|
10
|
+
if (d.root !== this.root)
|
|
11
|
+
return;
|
|
12
|
+
if (d.topic !== this.topic)
|
|
13
|
+
return;
|
|
14
|
+
this.dispatchEvent(new CustomEvent("data", { detail: d }));
|
|
15
|
+
};
|
|
16
|
+
onUnicast = (ev) => {
|
|
17
|
+
const d = ev?.detail;
|
|
18
|
+
if (!d)
|
|
19
|
+
return;
|
|
20
|
+
if (d.root !== this.root)
|
|
21
|
+
return;
|
|
22
|
+
if (d.topic !== this.topic)
|
|
23
|
+
return;
|
|
24
|
+
this.dispatchEvent(new CustomEvent("unicast", { detail: d }));
|
|
25
|
+
};
|
|
26
|
+
onJoined = (ev) => {
|
|
27
|
+
const d = ev?.detail;
|
|
28
|
+
if (!d)
|
|
29
|
+
return;
|
|
30
|
+
if (d.root !== this.root)
|
|
31
|
+
return;
|
|
32
|
+
if (d.topic !== this.topic)
|
|
33
|
+
return;
|
|
34
|
+
this.dispatchEvent(new CustomEvent("joined", { detail: d }));
|
|
35
|
+
};
|
|
36
|
+
onKicked = (ev) => {
|
|
37
|
+
const d = ev?.detail;
|
|
38
|
+
if (!d)
|
|
39
|
+
return;
|
|
40
|
+
if (d.root !== this.root)
|
|
41
|
+
return;
|
|
42
|
+
if (d.topic !== this.topic)
|
|
43
|
+
return;
|
|
44
|
+
this.dispatchEvent(new CustomEvent("kicked", { detail: d }));
|
|
45
|
+
};
|
|
46
|
+
constructor(fanout, opts) {
|
|
47
|
+
super();
|
|
48
|
+
this.fanout = fanout;
|
|
49
|
+
this.topic = opts.topic;
|
|
50
|
+
this.root = opts.root;
|
|
51
|
+
}
|
|
52
|
+
static fromSelf(fanout, topic) {
|
|
53
|
+
return new FanoutChannel(fanout, { topic, root: fanout.publicKeyHash });
|
|
54
|
+
}
|
|
55
|
+
ensureListening() {
|
|
56
|
+
if (this.listening)
|
|
57
|
+
return;
|
|
58
|
+
this.listening = true;
|
|
59
|
+
this.fanout.addEventListener("fanout:data", this.onData);
|
|
60
|
+
this.fanout.addEventListener("fanout:unicast", this.onUnicast);
|
|
61
|
+
this.fanout.addEventListener("fanout:joined", this.onJoined);
|
|
62
|
+
this.fanout.addEventListener("fanout:kicked", this.onKicked);
|
|
63
|
+
}
|
|
64
|
+
close() {
|
|
65
|
+
if (!this.listening)
|
|
66
|
+
return;
|
|
67
|
+
this.listening = false;
|
|
68
|
+
this.fanout.removeEventListener("fanout:data", this.onData);
|
|
69
|
+
this.fanout.removeEventListener("fanout:unicast", this.onUnicast);
|
|
70
|
+
this.fanout.removeEventListener("fanout:joined", this.onJoined);
|
|
71
|
+
this.fanout.removeEventListener("fanout:kicked", this.onKicked);
|
|
72
|
+
}
|
|
73
|
+
async leave(options) {
|
|
74
|
+
this.close();
|
|
75
|
+
await this.fanout.closeChannel(this.topic, this.root, options);
|
|
76
|
+
}
|
|
77
|
+
openAsRoot(options) {
|
|
78
|
+
this.ensureListening();
|
|
79
|
+
return this.fanout.openChannel(this.topic, this.root, { ...options, role: "root" });
|
|
80
|
+
}
|
|
81
|
+
join(options, joinOpts) {
|
|
82
|
+
this.ensureListening();
|
|
83
|
+
return this.fanout.joinChannel(this.topic, this.root, options, joinOpts);
|
|
84
|
+
}
|
|
85
|
+
publish(payload) {
|
|
86
|
+
return this.fanout.publishToChannel(this.topic, this.root, payload);
|
|
87
|
+
}
|
|
88
|
+
getPeerHashes(options) {
|
|
89
|
+
return this.fanout.getChannelPeerHashes(this.topic, this.root, options);
|
|
90
|
+
}
|
|
91
|
+
getRouteToken() {
|
|
92
|
+
return this.fanout.getRouteToken(this.topic, this.root);
|
|
93
|
+
}
|
|
94
|
+
resolveRouteToken(targetHash, options) {
|
|
95
|
+
return this.fanout.resolveRouteToken(this.topic, this.root, targetHash, options);
|
|
96
|
+
}
|
|
97
|
+
unicast(toRoute, payload) {
|
|
98
|
+
return this.fanout.unicast(this.topic, this.root, toRoute, payload);
|
|
99
|
+
}
|
|
100
|
+
unicastTo(targetHash, payload, options) {
|
|
101
|
+
return this.fanout.unicastTo(this.topic, this.root, targetHash, payload, options);
|
|
102
|
+
}
|
|
103
|
+
unicastAck(toRoute, payload, options) {
|
|
104
|
+
const target = toRoute[toRoute.length - 1];
|
|
105
|
+
return this.fanout.unicastAck(this.topic, this.root, toRoute, target, payload, options);
|
|
106
|
+
}
|
|
107
|
+
unicastToAck(targetHash, payload, options) {
|
|
108
|
+
return this.fanout.unicastToAck(this.topic, this.root, targetHash, payload, options);
|
|
109
|
+
}
|
|
110
|
+
end(lastSeqExclusive) {
|
|
111
|
+
return this.fanout.publishEnd(this.topic, this.root, lastSeqExclusive);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=fanout-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanout-channel.js","sourceRoot":"","sources":["../../src/fanout-channel.ts"],"names":[],"mappings":"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"}
|