Skip to content

Commit 7affbe2

Browse files
feat: lightpush & filter send requests to multiple peers (#1779)
* feat: lightpush & filter send requests to multiple peers * build message-hash before core * chore: restructure folder heirrarchy * fix: imports * chore: move @waku/core to dev deps * feat: create a new `ServiceNodes` wrapper class to encapsulate service node and message collector with redundancy accounted for * chore(filter): move tests against single service node to a subdir * feat: support relay, add strict checking, add tests * fix(filter): handle errors * chore(tests): add tests for ping * add tests for push * chore: abstract redundancy * feat: add unsubscribe tests * fix: tests * add lightpush tests * fix: imports * fix: merge & add warning * merge: master * fix: breaking tests with master * address comments * make num peers configurable * fix: typo
1 parent 3e7b95e commit 7affbe2

27 files changed

+2152
-190
lines changed

package-lock.json

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
"workspaces": [
66
"packages/interfaces",
77
"packages/utils",
8+
"packages/message-hash",
89
"packages/proto",
910
"packages/enr",
1011
"packages/core",
1112
"packages/relay",
12-
"packages/message-hash",
1313
"packages/peer-exchange",
1414
"packages/dns-discovery",
1515
"packages/message-encryption",

packages/core/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
"@noble/hashes": "^1.3.2",
7777
"@waku/enr": "^0.0.20",
7878
"@waku/interfaces": "0.0.21",
79+
"@waku/message-hash": "^0.1.10",
7980
"@waku/proto": "0.0.6",
8081
"@waku/utils": "0.0.14",
8182
"debug": "^4.3.4",

packages/core/src/lib/base_protocol.ts

+11
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@ import {
1717
import { filterPeersByDiscovery } from "./filterPeers.js";
1818
import { StreamManager } from "./stream_manager.js";
1919

20+
const DEFAULT_NUM_PEERS_TO_USE = 3;
21+
2022
/**
2123
* A class with predefined helpers, to be used as a base to implement Waku
2224
* Protocols.
2325
*/
2426
export class BaseProtocol implements IBaseProtocol {
2527
public readonly addLibp2pEventListener: Libp2p["addEventListener"];
2628
public readonly removeLibp2pEventListener: Libp2p["removeEventListener"];
29+
readonly numPeersToUse: number;
2730
protected streamManager: StreamManager;
2831
protected pubsubTopics: PubsubTopic[];
2932

@@ -35,6 +38,8 @@ export class BaseProtocol implements IBaseProtocol {
3538
) {
3639
this.pubsubTopics = this.initializePubsubTopic(options);
3740

41+
this.numPeersToUse = options?.numPeersToUse ?? DEFAULT_NUM_PEERS_TO_USE;
42+
3843
this.addLibp2pEventListener = components.events.addEventListener.bind(
3944
components.events
4045
);
@@ -124,6 +129,12 @@ export class BaseProtocol implements IBaseProtocol {
124129
);
125130
}
126131

132+
if (sortedFilteredPeers.length < numPeers) {
133+
this.log.warn(
134+
`Only ${sortedFilteredPeers.length} peers found. Requested ${numPeers}.`
135+
);
136+
}
137+
127138
return sortedFilteredPeers;
128139
}
129140

0 commit comments

Comments
 (0)