@libp2p/pubsub 1.0.6 → 1.2.2
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/dist/src/index.d.ts +8 -12
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +23 -16
- package/dist/src/index.js.map +1 -1
- package/dist/src/peer-streams.d.ts +7 -6
- package/dist/src/peer-streams.d.ts.map +1 -1
- package/dist/src/peer-streams.js +13 -10
- package/dist/src/peer-streams.js.map +1 -1
- package/package.json +7 -5
- package/src/index.ts +32 -25
- package/src/peer-streams.ts +23 -16
package/dist/src/index.d.ts
CHANGED
@@ -1,15 +1,13 @@
|
|
1
|
-
|
2
|
-
import debug from 'debug';
|
3
|
-
import { EventEmitter } from 'events';
|
1
|
+
import { EventEmitter } from '@libp2p/interfaces';
|
4
2
|
import Queue from 'p-queue';
|
5
3
|
import { RPC, IRPC } from './message/rpc.js';
|
6
4
|
import { PeerStreams } from './peer-streams.js';
|
7
5
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
8
|
-
import type { Registrar,
|
6
|
+
import type { Registrar, IncomingStreamData } from '@libp2p/interfaces/registrar';
|
9
7
|
import type { Connection } from '@libp2p/interfaces/connection';
|
10
8
|
import type BufferList from 'bl';
|
11
|
-
import type { PubSub, Message, StrictNoSign, StrictSign, PubsubOptions } from '@libp2p/interfaces/pubsub';
|
12
|
-
import type {
|
9
|
+
import type { PubSub, Message, StrictNoSign, StrictSign, PubsubOptions, PubsubEvents } from '@libp2p/interfaces/pubsub';
|
10
|
+
import type { Logger } from '@libp2p/logger';
|
13
11
|
export interface TopicValidator {
|
14
12
|
(topic: string, message: Message): Promise<void>;
|
15
13
|
}
|
@@ -17,7 +15,7 @@ export interface TopicValidator {
|
|
17
15
|
* PubsubBaseProtocol handles the peers and connections logic for pubsub routers
|
18
16
|
* and specifies the API that pubsub routers should have.
|
19
17
|
*/
|
20
|
-
export declare abstract class PubsubBaseProtocol extends EventEmitter implements PubSub
|
18
|
+
export declare abstract class PubsubBaseProtocol<EventMap> extends EventEmitter<EventMap & PubsubEvents> implements PubSub<EventMap & PubsubEvents> {
|
21
19
|
peerId: PeerId;
|
22
20
|
started: boolean;
|
23
21
|
/**
|
@@ -53,9 +51,7 @@ export declare abstract class PubsubBaseProtocol extends EventEmitter implements
|
|
53
51
|
topicValidators: Map<string, TopicValidator>;
|
54
52
|
queue: Queue;
|
55
53
|
registrar: Registrar;
|
56
|
-
protected log:
|
57
|
-
err: debug.Debugger;
|
58
|
-
};
|
54
|
+
protected log: Logger;
|
59
55
|
protected multicodecs: string[];
|
60
56
|
protected _libp2p: any;
|
61
57
|
private _registrarId;
|
@@ -65,7 +61,7 @@ export declare abstract class PubsubBaseProtocol extends EventEmitter implements
|
|
65
61
|
*
|
66
62
|
* @returns {void}
|
67
63
|
*/
|
68
|
-
start(): void
|
64
|
+
start(): Promise<void>;
|
69
65
|
/**
|
70
66
|
* Unregister the pubsub protocol and the streams with other peers will be closed.
|
71
67
|
*
|
@@ -76,7 +72,7 @@ export declare abstract class PubsubBaseProtocol extends EventEmitter implements
|
|
76
72
|
/**
|
77
73
|
* On an inbound stream opened
|
78
74
|
*/
|
79
|
-
protected _onIncomingStream(
|
75
|
+
protected _onIncomingStream(evt: CustomEvent<IncomingStreamData>): void;
|
80
76
|
/**
|
81
77
|
* Registrar notifies an established connection with pubsub protocol
|
82
78
|
*/
|
package/dist/src/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import
|
2
|
-
import { EventEmitter } from '
|
1
|
+
import { logger } from '@libp2p/logger';
|
2
|
+
import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
|
3
3
|
import errcode from 'err-code';
|
4
4
|
import { pipe } from 'it-pipe';
|
5
5
|
import Queue from 'p-queue';
|
@@ -17,9 +17,7 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
17
17
|
constructor(props) {
|
18
18
|
super();
|
19
19
|
const { debugName = 'libp2p:pubsub', multicodecs = [], libp2p = null, globalSignaturePolicy = 'StrictSign', canRelayMessage = false, emitSelf = false, messageProcessingConcurrency = 10 } = props;
|
20
|
-
this.log =
|
21
|
-
err: debug(`${debugName}:error`)
|
22
|
-
});
|
20
|
+
this.log = logger(debugName);
|
23
21
|
this.multicodecs = utils.ensureArray(multicodecs);
|
24
22
|
this._libp2p = libp2p;
|
25
23
|
this.registrar = libp2p.registrar;
|
@@ -43,17 +41,19 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
43
41
|
*
|
44
42
|
* @returns {void}
|
45
43
|
*/
|
46
|
-
start() {
|
44
|
+
async start() {
|
47
45
|
if (this.started) {
|
48
46
|
return;
|
49
47
|
}
|
50
48
|
this.log('starting');
|
51
49
|
// Incoming streams
|
52
50
|
// Called after a peer dials us
|
53
|
-
this.registrar.handle(this.multicodecs, this._onIncomingStream);
|
51
|
+
await this.registrar.handle(this.multicodecs, this._onIncomingStream);
|
54
52
|
// register protocol with topology
|
55
53
|
// Topology callbacks called on connection manager changes
|
56
54
|
const topology = new MulticodecTopology({
|
55
|
+
peerStore: this._libp2p.peerStore,
|
56
|
+
connectionManager: this._libp2p.connectionManager,
|
57
57
|
multicodecs: this.multicodecs,
|
58
58
|
handlers: {
|
59
59
|
onConnect: this._onPeerConnected,
|
@@ -90,7 +90,8 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
90
90
|
/**
|
91
91
|
* On an inbound stream opened
|
92
92
|
*/
|
93
|
-
_onIncomingStream(
|
93
|
+
_onIncomingStream(evt) {
|
94
|
+
const { protocol, stream, connection } = evt.detail;
|
94
95
|
const peerId = connection.remotePeer;
|
95
96
|
const idB58Str = peerId.toString();
|
96
97
|
const peer = this._addPeer(peerId, protocol);
|
@@ -110,7 +111,7 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
110
111
|
await peer.attachOutboundStream(stream);
|
111
112
|
}
|
112
113
|
catch (err) {
|
113
|
-
this.log.
|
114
|
+
this.log.error(err);
|
114
115
|
}
|
115
116
|
// Immediately send my own subscriptions to the newly established conn
|
116
117
|
this._sendSubscriptions(idB58Str, Array.from(this.subscriptions), true);
|
@@ -140,7 +141,9 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
140
141
|
protocol
|
141
142
|
});
|
142
143
|
this.peers.set(id, peerStreams);
|
143
|
-
peerStreams.
|
144
|
+
peerStreams.addEventListener('close', () => this._removePeer(peerId), {
|
145
|
+
once: true
|
146
|
+
});
|
144
147
|
return peerStreams;
|
145
148
|
}
|
146
149
|
/**
|
@@ -149,10 +152,10 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
149
152
|
_removePeer(peerId) {
|
150
153
|
const id = peerId.toString();
|
151
154
|
const peerStreams = this.peers.get(id);
|
152
|
-
if (peerStreams == null)
|
155
|
+
if (peerStreams == null) {
|
153
156
|
return;
|
157
|
+
}
|
154
158
|
// close peer streams
|
155
|
-
peerStreams.removeAllListeners();
|
156
159
|
peerStreams.close();
|
157
160
|
// delete peer streams
|
158
161
|
this.log('delete peer', id);
|
@@ -198,7 +201,9 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
198
201
|
subs.forEach((subOpt) => {
|
199
202
|
this._processRpcSubOpt(idB58Str, subOpt);
|
200
203
|
});
|
201
|
-
this.
|
204
|
+
this.dispatchEvent(new CustomEvent('pubsub:subscription-change', {
|
205
|
+
detail: { peerId: peerStreams.id, subscriptions: subs }
|
206
|
+
}));
|
202
207
|
}
|
203
208
|
if (!this._acceptFrom(idB58Str)) {
|
204
209
|
this.log('received message from unacceptable peer %s', idB58Str);
|
@@ -217,7 +222,7 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
217
222
|
await this._processRpcMessage(msg);
|
218
223
|
}
|
219
224
|
catch (err) {
|
220
|
-
this.log.
|
225
|
+
this.log.error(err);
|
221
226
|
}
|
222
227
|
}))
|
223
228
|
.catch(err => this.log(err));
|
@@ -271,7 +276,9 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
271
276
|
_emitMessage(message) {
|
272
277
|
message.topicIDs.forEach((topic) => {
|
273
278
|
if (this.subscriptions.has(topic)) {
|
274
|
-
this.
|
279
|
+
this.dispatchEvent(new CustomEvent(topic, {
|
280
|
+
detail: message
|
281
|
+
}));
|
275
282
|
}
|
276
283
|
});
|
277
284
|
}
|
@@ -319,7 +326,7 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
319
326
|
const peerStreams = this.peers.get(id);
|
320
327
|
if ((peerStreams == null) || !peerStreams.isWritable) {
|
321
328
|
const msg = `Cannot send RPC to ${id} as there is no open stream to it available`;
|
322
|
-
this.log.
|
329
|
+
this.log.error(msg);
|
323
330
|
return;
|
324
331
|
}
|
325
332
|
peerStreams.write(this._encodeRpc(rpc));
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
2
|
-
import { EventEmitter } from 'events';
|
1
|
+
import { EventEmitter } from '@libp2p/interfaces';
|
3
2
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
4
|
-
import type {
|
3
|
+
import type { Stream } from '@libp2p/interfaces/connection';
|
5
4
|
import type { Pushable } from 'it-pushable';
|
5
|
+
import type { PeerStreamEvents } from '@libp2p/interfaces/pubsub';
|
6
6
|
export interface Options {
|
7
7
|
id: PeerId;
|
8
8
|
protocol: string;
|
@@ -10,7 +10,7 @@ export interface Options {
|
|
10
10
|
/**
|
11
11
|
* Thin wrapper around a peer's inbound / outbound pubsub streams
|
12
12
|
*/
|
13
|
-
export declare class PeerStreams extends EventEmitter {
|
13
|
+
export declare class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
14
14
|
readonly id: PeerId;
|
15
15
|
readonly protocol: string;
|
16
16
|
/**
|
@@ -33,6 +33,7 @@ export declare class PeerStreams extends EventEmitter {
|
|
33
33
|
* An AbortController for controlled shutdown of the inbound stream
|
34
34
|
*/
|
35
35
|
private readonly _inboundAbortController;
|
36
|
+
private closed;
|
36
37
|
constructor(opts: Options);
|
37
38
|
/**
|
38
39
|
* Do we have a connection to read from?
|
@@ -50,11 +51,11 @@ export declare class PeerStreams extends EventEmitter {
|
|
50
51
|
/**
|
51
52
|
* Attach a raw inbound stream and setup a read stream
|
52
53
|
*/
|
53
|
-
attachInboundStream(stream:
|
54
|
+
attachInboundStream(stream: Stream): AsyncIterable<Uint8Array>;
|
54
55
|
/**
|
55
56
|
* Attach a raw outbound stream and setup a write stream
|
56
57
|
*/
|
57
|
-
attachOutboundStream(stream:
|
58
|
+
attachOutboundStream(stream: Stream): Promise<void>;
|
58
59
|
/**
|
59
60
|
* Closes the open connection to peer
|
60
61
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"peer-streams.d.ts","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"peer-streams.d.ts","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAK9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAIjE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC7D,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC;;OAEG;IACI,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;IACvD;;OAEG;IACI,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;IAC3D;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAoB;IAC9C;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAoB;IAC7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiB;IACzD,OAAO,CAAC,MAAM,CAAS;gBAEV,IAAI,EAAE,OAAO;IAU1B;;OAEG;IACH,IAAI,UAAU,YAEb;IAED;;OAEG;IACH,IAAI,UAAU,YAEb;IAED;;;OAGG;IACH,KAAK,CAAE,IAAI,EAAE,UAAU;IASvB;;OAEG;IACH,mBAAmB,CAAE,MAAM,EAAE,MAAM;IAmBnC;;OAEG;IACG,oBAAoB,CAAE,MAAM,EAAE,MAAM;IAsC1C;;OAEG;IACH,KAAK;CAsBN"}
|
package/dist/src/peer-streams.js
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
import
|
2
|
-
import { EventEmitter } from '
|
1
|
+
import { logger } from '@libp2p/logger';
|
2
|
+
import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
|
3
3
|
import * as lp from 'it-length-prefixed';
|
4
4
|
import { pushable } from 'it-pushable';
|
5
5
|
import { pipe } from 'it-pipe';
|
6
6
|
import { abortableSource } from 'abortable-iterator';
|
7
|
-
const log =
|
8
|
-
error: debug('libp2p-pubsub:peer-streams:err')
|
9
|
-
});
|
7
|
+
const log = logger('libp2p-pubsub:peer-streams');
|
10
8
|
/**
|
11
9
|
* Thin wrapper around a peer's inbound / outbound pubsub streams
|
12
10
|
*/
|
@@ -16,6 +14,7 @@ export class PeerStreams extends EventEmitter {
|
|
16
14
|
this.id = opts.id;
|
17
15
|
this.protocol = opts.protocol;
|
18
16
|
this._inboundAbortController = new AbortController();
|
17
|
+
this.closed = false;
|
19
18
|
}
|
20
19
|
/**
|
21
20
|
* Do we have a connection to read from?
|
@@ -50,7 +49,7 @@ export class PeerStreams extends EventEmitter {
|
|
50
49
|
// - transformed with length-prefix transform
|
51
50
|
this._rawInboundStream = stream;
|
52
51
|
this.inboundStream = abortableSource(pipe(this._rawInboundStream, lp.decode()), this._inboundAbortController.signal, { returnOnAbort: true });
|
53
|
-
this.
|
52
|
+
this.dispatchEvent(new CustomEvent('stream:inbound'));
|
54
53
|
return this.inboundStream;
|
55
54
|
}
|
56
55
|
/**
|
@@ -67,13 +66,13 @@ export class PeerStreams extends EventEmitter {
|
|
67
66
|
this.outboundStream = pushable({
|
68
67
|
onEnd: (shouldEmit) => {
|
69
68
|
// close writable side of the stream
|
70
|
-
if (
|
69
|
+
if (this._rawOutboundStream != null && this._rawOutboundStream.reset != null) { // eslint-disable-line @typescript-eslint/prefer-optional-chain
|
71
70
|
this._rawOutboundStream.reset();
|
72
71
|
}
|
73
72
|
this._rawOutboundStream = undefined;
|
74
73
|
this.outboundStream = undefined;
|
75
74
|
if (shouldEmit != null) {
|
76
|
-
this.
|
75
|
+
this.dispatchEvent(new CustomEvent('close'));
|
77
76
|
}
|
78
77
|
}
|
79
78
|
});
|
@@ -82,13 +81,17 @@ export class PeerStreams extends EventEmitter {
|
|
82
81
|
});
|
83
82
|
// Only emit if the connection is new
|
84
83
|
if (_prevStream == null) {
|
85
|
-
this.
|
84
|
+
this.dispatchEvent(new CustomEvent('stream:outbound'));
|
86
85
|
}
|
87
86
|
}
|
88
87
|
/**
|
89
88
|
* Closes the open connection to peer
|
90
89
|
*/
|
91
90
|
close() {
|
91
|
+
if (this.closed) {
|
92
|
+
return;
|
93
|
+
}
|
94
|
+
this.closed = true;
|
92
95
|
// End the outbound stream
|
93
96
|
if (this.outboundStream != null) {
|
94
97
|
this.outboundStream.end();
|
@@ -101,7 +104,7 @@ export class PeerStreams extends EventEmitter {
|
|
101
104
|
this.outboundStream = undefined;
|
102
105
|
this._rawInboundStream = undefined;
|
103
106
|
this.inboundStream = undefined;
|
104
|
-
this.
|
107
|
+
this.dispatchEvent(new CustomEvent('close'));
|
105
108
|
}
|
106
109
|
}
|
107
110
|
//# sourceMappingURL=peer-streams.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"peer-streams.js","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"peer-streams.js","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/pubsub",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.2.2",
|
4
4
|
"description": "libp2p pubsub base class",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-pubsub#readme",
|
@@ -166,11 +166,11 @@
|
|
166
166
|
},
|
167
167
|
"scripts": {
|
168
168
|
"lint": "aegir lint",
|
169
|
-
"dep-check": "aegir dep-check dist/src/**/*.js",
|
169
|
+
"dep-check": "aegir dep-check dist/src/**/*.js dist/test/**/*.js",
|
170
170
|
"build": "tsc",
|
171
171
|
"postbuild": "npm run build:copy-proto-files",
|
172
172
|
"pretest": "npm run build",
|
173
|
-
"test": "aegir test -f ./dist/test/**/*.js",
|
173
|
+
"test": "aegir test -f ./dist/test/*.js -f ./dist/test/**/*.js",
|
174
174
|
"test:chrome": "npm run test -- -t browser",
|
175
175
|
"test:chrome-webworker": "npm run test -- -t webworker",
|
176
176
|
"test:firefox": "npm run test -- -t browser -- --browser firefox",
|
@@ -188,11 +188,11 @@
|
|
188
188
|
"dependencies": {
|
189
189
|
"@libp2p/crypto": "^0.22.2",
|
190
190
|
"@libp2p/interfaces": "^1.0.0",
|
191
|
+
"@libp2p/logger": "^1.0.1",
|
191
192
|
"@libp2p/peer-id": "^1.0.0",
|
192
193
|
"@libp2p/peer-id-factory": "^1.0.0",
|
193
194
|
"@libp2p/topology": "^1.0.0",
|
194
195
|
"@multiformats/multiaddr": "^10.1.1",
|
195
|
-
"debug": "^4.3.2",
|
196
196
|
"err-code": "^3.0.1",
|
197
197
|
"iso-random-stream": "^2.0.0",
|
198
198
|
"it-length-prefixed": "^6.0.1",
|
@@ -203,8 +203,10 @@
|
|
203
203
|
},
|
204
204
|
"devDependencies": {
|
205
205
|
"@types/bl": "^5.0.2",
|
206
|
-
"
|
206
|
+
"abortable-iterator": "^4.0.2",
|
207
207
|
"aegir": "^36.1.3",
|
208
|
+
"it-pair": "^2.0.2",
|
209
|
+
"it-pushable": "^2.0.1",
|
208
210
|
"protobufjs": "^6.10.2",
|
209
211
|
"util": "^0.12.4"
|
210
212
|
}
|
package/src/index.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import
|
2
|
-
import { EventEmitter } from '
|
1
|
+
import { logger } from '@libp2p/logger'
|
2
|
+
import { EventEmitter, CustomEvent } from '@libp2p/interfaces'
|
3
3
|
import errcode from 'err-code'
|
4
4
|
import { pipe } from 'it-pipe'
|
5
5
|
import Queue from 'p-queue'
|
@@ -8,16 +8,16 @@ import { codes } from './errors.js'
|
|
8
8
|
import { RPC, IRPC } from './message/rpc.js'
|
9
9
|
import { PeerStreams } from './peer-streams.js'
|
10
10
|
import * as utils from './utils.js'
|
11
|
-
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
12
|
-
import type { Registrar, IncomingStreamEvent } from '@libp2p/interfaces/registrar'
|
13
|
-
import type { Connection } from '@libp2p/interfaces/connection'
|
14
|
-
import type BufferList from 'bl'
|
15
11
|
import {
|
16
12
|
signMessage,
|
17
13
|
verifySignature
|
18
14
|
} from './message/sign.js'
|
19
|
-
import type {
|
20
|
-
import type {
|
15
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
16
|
+
import type { Registrar, IncomingStreamData } from '@libp2p/interfaces/registrar'
|
17
|
+
import type { Connection } from '@libp2p/interfaces/connection'
|
18
|
+
import type BufferList from 'bl'
|
19
|
+
import type { PubSub, Message, StrictNoSign, StrictSign, PubsubOptions, PubsubEvents } from '@libp2p/interfaces/pubsub'
|
20
|
+
import type { Logger } from '@libp2p/logger'
|
21
21
|
|
22
22
|
export interface TopicValidator { (topic: string, message: Message): Promise<void> }
|
23
23
|
|
@@ -25,7 +25,7 @@ export interface TopicValidator { (topic: string, message: Message): Promise<voi
|
|
25
25
|
* PubsubBaseProtocol handles the peers and connections logic for pubsub routers
|
26
26
|
* and specifies the API that pubsub routers should have.
|
27
27
|
*/
|
28
|
-
export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub
|
28
|
+
export abstract class PubsubBaseProtocol<EventMap> extends EventEmitter<EventMap & PubsubEvents> implements PubSub<EventMap & PubsubEvents> {
|
29
29
|
public peerId: PeerId
|
30
30
|
public started: boolean
|
31
31
|
/**
|
@@ -62,7 +62,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
62
62
|
public queue: Queue
|
63
63
|
public registrar: Registrar
|
64
64
|
|
65
|
-
protected log:
|
65
|
+
protected log: Logger
|
66
66
|
protected multicodecs: string[]
|
67
67
|
protected _libp2p: any
|
68
68
|
private _registrarId: string | undefined
|
@@ -80,10 +80,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
80
80
|
messageProcessingConcurrency = 10
|
81
81
|
} = props
|
82
82
|
|
83
|
-
this.log =
|
84
|
-
err: debug(`${debugName}:error`)
|
85
|
-
})
|
86
|
-
|
83
|
+
this.log = logger(debugName)
|
87
84
|
this.multicodecs = utils.ensureArray(multicodecs)
|
88
85
|
this._libp2p = libp2p
|
89
86
|
this.registrar = libp2p.registrar
|
@@ -110,7 +107,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
110
107
|
*
|
111
108
|
* @returns {void}
|
112
109
|
*/
|
113
|
-
start () {
|
110
|
+
async start () {
|
114
111
|
if (this.started) {
|
115
112
|
return
|
116
113
|
}
|
@@ -119,11 +116,13 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
119
116
|
|
120
117
|
// Incoming streams
|
121
118
|
// Called after a peer dials us
|
122
|
-
this.registrar.handle(this.multicodecs, this._onIncomingStream)
|
119
|
+
await this.registrar.handle(this.multicodecs, this._onIncomingStream)
|
123
120
|
|
124
121
|
// register protocol with topology
|
125
122
|
// Topology callbacks called on connection manager changes
|
126
123
|
const topology = new MulticodecTopology({
|
124
|
+
peerStore: this._libp2p.peerStore,
|
125
|
+
connectionManager: this._libp2p.connectionManager,
|
127
126
|
multicodecs: this.multicodecs,
|
128
127
|
handlers: {
|
129
128
|
onConnect: this._onPeerConnected,
|
@@ -167,7 +166,8 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
167
166
|
/**
|
168
167
|
* On an inbound stream opened
|
169
168
|
*/
|
170
|
-
protected _onIncomingStream (
|
169
|
+
protected _onIncomingStream (evt: CustomEvent<IncomingStreamData>) {
|
170
|
+
const { protocol, stream, connection } = evt.detail
|
171
171
|
const peerId = connection.remotePeer
|
172
172
|
const idB58Str = peerId.toString()
|
173
173
|
const peer = this._addPeer(peerId, protocol)
|
@@ -189,7 +189,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
189
189
|
const peer = this._addPeer(peerId, protocol)
|
190
190
|
await peer.attachOutboundStream(stream)
|
191
191
|
} catch (err: any) {
|
192
|
-
this.log.
|
192
|
+
this.log.error(err)
|
193
193
|
}
|
194
194
|
|
195
195
|
// Immediately send my own subscriptions to the newly established conn
|
@@ -227,7 +227,9 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
227
227
|
})
|
228
228
|
|
229
229
|
this.peers.set(id, peerStreams)
|
230
|
-
peerStreams.
|
230
|
+
peerStreams.addEventListener('close', () => this._removePeer(peerId), {
|
231
|
+
once: true
|
232
|
+
})
|
231
233
|
|
232
234
|
return peerStreams
|
233
235
|
}
|
@@ -238,10 +240,11 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
238
240
|
protected _removePeer (peerId: PeerId) {
|
239
241
|
const id = peerId.toString()
|
240
242
|
const peerStreams = this.peers.get(id)
|
241
|
-
if (peerStreams == null)
|
243
|
+
if (peerStreams == null) {
|
244
|
+
return
|
245
|
+
}
|
242
246
|
|
243
247
|
// close peer streams
|
244
|
-
peerStreams.removeAllListeners()
|
245
248
|
peerStreams.close()
|
246
249
|
|
247
250
|
// delete peer streams
|
@@ -297,7 +300,9 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
297
300
|
subs.forEach((subOpt) => {
|
298
301
|
this._processRpcSubOpt(idB58Str, subOpt)
|
299
302
|
})
|
300
|
-
this.
|
303
|
+
this.dispatchEvent(new CustomEvent('pubsub:subscription-change', {
|
304
|
+
detail: { peerId: peerStreams.id, subscriptions: subs }
|
305
|
+
}))
|
301
306
|
}
|
302
307
|
|
303
308
|
if (!this._acceptFrom(idB58Str)) {
|
@@ -320,7 +325,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
320
325
|
|
321
326
|
await this._processRpcMessage(msg)
|
322
327
|
} catch (err: any) {
|
323
|
-
this.log.
|
328
|
+
this.log.error(err)
|
324
329
|
}
|
325
330
|
}))
|
326
331
|
.catch(err => this.log(err))
|
@@ -381,7 +386,9 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
381
386
|
_emitMessage (message: Message) {
|
382
387
|
message.topicIDs.forEach((topic) => {
|
383
388
|
if (this.subscriptions.has(topic)) {
|
384
|
-
this.
|
389
|
+
this.dispatchEvent(new CustomEvent(topic, {
|
390
|
+
detail: message
|
391
|
+
}))
|
385
392
|
}
|
386
393
|
})
|
387
394
|
}
|
@@ -435,7 +442,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
435
442
|
if ((peerStreams == null) || !peerStreams.isWritable) {
|
436
443
|
const msg = `Cannot send RPC to ${id} as there is no open stream to it available`
|
437
444
|
|
438
|
-
this.log.
|
445
|
+
this.log.error(msg)
|
439
446
|
return
|
440
447
|
}
|
441
448
|
peerStreams.write(this._encodeRpc(rpc))
|
package/src/peer-streams.ts
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
import
|
2
|
-
import { EventEmitter } from '
|
1
|
+
import { logger } from '@libp2p/logger'
|
2
|
+
import { EventEmitter, CustomEvent } from '@libp2p/interfaces'
|
3
3
|
import * as lp from 'it-length-prefixed'
|
4
4
|
import { pushable } from 'it-pushable'
|
5
5
|
import { pipe } from 'it-pipe'
|
6
6
|
import { abortableSource } from 'abortable-iterator'
|
7
7
|
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
8
|
-
import type {
|
8
|
+
import type { Stream } from '@libp2p/interfaces/connection'
|
9
9
|
import type { Pushable } from 'it-pushable'
|
10
|
+
import type { PeerStreamEvents } from '@libp2p/interfaces/pubsub'
|
10
11
|
|
11
|
-
const log =
|
12
|
-
error: debug('libp2p-pubsub:peer-streams:err')
|
13
|
-
})
|
12
|
+
const log = logger('libp2p-pubsub:peer-streams')
|
14
13
|
|
15
14
|
export interface Options {
|
16
15
|
id: PeerId
|
@@ -20,7 +19,7 @@ export interface Options {
|
|
20
19
|
/**
|
21
20
|
* Thin wrapper around a peer's inbound / outbound pubsub streams
|
22
21
|
*/
|
23
|
-
export class PeerStreams extends EventEmitter {
|
22
|
+
export class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
24
23
|
public readonly id: PeerId
|
25
24
|
public readonly protocol: string
|
26
25
|
/**
|
@@ -34,15 +33,16 @@ export class PeerStreams extends EventEmitter {
|
|
34
33
|
/**
|
35
34
|
* The raw outbound stream, as retrieved from conn.newStream
|
36
35
|
*/
|
37
|
-
private _rawOutboundStream:
|
36
|
+
private _rawOutboundStream: Stream | undefined
|
38
37
|
/**
|
39
38
|
* The raw inbound stream, as retrieved from the callback from libp2p.handle
|
40
39
|
*/
|
41
|
-
private _rawInboundStream:
|
40
|
+
private _rawInboundStream: Stream | undefined
|
42
41
|
/**
|
43
42
|
* An AbortController for controlled shutdown of the inbound stream
|
44
43
|
*/
|
45
44
|
private readonly _inboundAbortController: AbortController
|
45
|
+
private closed: boolean
|
46
46
|
|
47
47
|
constructor (opts: Options) {
|
48
48
|
super()
|
@@ -51,6 +51,7 @@ export class PeerStreams extends EventEmitter {
|
|
51
51
|
this.protocol = opts.protocol
|
52
52
|
|
53
53
|
this._inboundAbortController = new AbortController()
|
54
|
+
this.closed = false
|
54
55
|
}
|
55
56
|
|
56
57
|
/**
|
@@ -83,7 +84,7 @@ export class PeerStreams extends EventEmitter {
|
|
83
84
|
/**
|
84
85
|
* Attach a raw inbound stream and setup a read stream
|
85
86
|
*/
|
86
|
-
attachInboundStream (stream:
|
87
|
+
attachInboundStream (stream: Stream) {
|
87
88
|
// Create and attach a new inbound stream
|
88
89
|
// The inbound stream is:
|
89
90
|
// - abortable, set to only return on abort, rather than throw
|
@@ -98,14 +99,14 @@ export class PeerStreams extends EventEmitter {
|
|
98
99
|
{ returnOnAbort: true }
|
99
100
|
)
|
100
101
|
|
101
|
-
this.
|
102
|
+
this.dispatchEvent(new CustomEvent('stream:inbound'))
|
102
103
|
return this.inboundStream
|
103
104
|
}
|
104
105
|
|
105
106
|
/**
|
106
107
|
* Attach a raw outbound stream and setup a write stream
|
107
108
|
*/
|
108
|
-
async attachOutboundStream (stream:
|
109
|
+
async attachOutboundStream (stream: Stream) {
|
109
110
|
// If an outbound stream already exists, gently close it
|
110
111
|
const _prevStream = this.outboundStream
|
111
112
|
if (this.outboundStream != null) {
|
@@ -117,14 +118,14 @@ export class PeerStreams extends EventEmitter {
|
|
117
118
|
this.outboundStream = pushable({
|
118
119
|
onEnd: (shouldEmit) => {
|
119
120
|
// close writable side of the stream
|
120
|
-
if (
|
121
|
+
if (this._rawOutboundStream != null && this._rawOutboundStream.reset != null) { // eslint-disable-line @typescript-eslint/prefer-optional-chain
|
121
122
|
this._rawOutboundStream.reset()
|
122
123
|
}
|
123
124
|
|
124
125
|
this._rawOutboundStream = undefined
|
125
126
|
this.outboundStream = undefined
|
126
127
|
if (shouldEmit != null) {
|
127
|
-
this.
|
128
|
+
this.dispatchEvent(new CustomEvent('close'))
|
128
129
|
}
|
129
130
|
}
|
130
131
|
})
|
@@ -139,7 +140,7 @@ export class PeerStreams extends EventEmitter {
|
|
139
140
|
|
140
141
|
// Only emit if the connection is new
|
141
142
|
if (_prevStream == null) {
|
142
|
-
this.
|
143
|
+
this.dispatchEvent(new CustomEvent('stream:outbound'))
|
143
144
|
}
|
144
145
|
}
|
145
146
|
|
@@ -147,6 +148,12 @@ export class PeerStreams extends EventEmitter {
|
|
147
148
|
* Closes the open connection to peer
|
148
149
|
*/
|
149
150
|
close () {
|
151
|
+
if (this.closed) {
|
152
|
+
return
|
153
|
+
}
|
154
|
+
|
155
|
+
this.closed = true
|
156
|
+
|
150
157
|
// End the outbound stream
|
151
158
|
if (this.outboundStream != null) {
|
152
159
|
this.outboundStream.end()
|
@@ -160,6 +167,6 @@ export class PeerStreams extends EventEmitter {
|
|
160
167
|
this.outboundStream = undefined
|
161
168
|
this._rawInboundStream = undefined
|
162
169
|
this.inboundStream = undefined
|
163
|
-
this.
|
170
|
+
this.dispatchEvent(new CustomEvent('close'))
|
164
171
|
}
|
165
172
|
}
|