libp2p 0.44.0 → 0.45.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/dist/index.min.js +30 -30
- package/dist/src/address-manager/index.d.ts +8 -4
- package/dist/src/address-manager/index.d.ts.map +1 -1
- package/dist/src/address-manager/index.js +37 -6
- package/dist/src/address-manager/index.js.map +1 -1
- package/dist/src/address-manager/utils.d.ts +2 -0
- package/dist/src/address-manager/utils.d.ts.map +1 -0
- package/dist/src/address-manager/utils.js +12 -0
- package/dist/src/address-manager/utils.js.map +1 -0
- package/dist/src/autonat/constants.d.ts +16 -2
- package/dist/src/autonat/constants.d.ts.map +1 -1
- package/dist/src/autonat/constants.js +16 -2
- package/dist/src/autonat/constants.js.map +1 -1
- package/dist/src/autonat/index.d.ts +12 -33
- package/dist/src/autonat/index.d.ts.map +1 -1
- package/dist/src/autonat/index.js +36 -30
- package/dist/src/autonat/index.js.map +1 -1
- package/dist/src/circuit-relay/server/advert-service.d.ts.map +1 -1
- package/dist/src/circuit-relay/server/advert-service.js +2 -2
- package/dist/src/circuit-relay/server/advert-service.js.map +1 -1
- package/dist/src/circuit-relay/server/index.d.ts.map +1 -1
- package/dist/src/circuit-relay/server/index.js +10 -3
- package/dist/src/circuit-relay/server/index.js.map +1 -1
- package/dist/src/circuit-relay/transport/discovery.d.ts.map +1 -1
- package/dist/src/circuit-relay/transport/discovery.js +4 -2
- package/dist/src/circuit-relay/transport/discovery.js.map +1 -1
- package/dist/src/circuit-relay/transport/index.d.ts +3 -0
- package/dist/src/circuit-relay/transport/index.d.ts.map +1 -1
- package/dist/src/circuit-relay/transport/index.js +6 -4
- package/dist/src/circuit-relay/transport/index.js.map +1 -1
- package/dist/src/circuit-relay/transport/listener.d.ts.map +1 -1
- package/dist/src/circuit-relay/transport/listener.js +30 -26
- package/dist/src/circuit-relay/transport/listener.js.map +1 -1
- package/dist/src/circuit-relay/transport/reservation-store.d.ts +5 -4
- package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -1
- package/dist/src/circuit-relay/transport/reservation-store.js +37 -30
- package/dist/src/circuit-relay/transport/reservation-store.js.map +1 -1
- package/dist/src/components.d.ts +6 -63
- package/dist/src/components.d.ts.map +1 -1
- package/dist/src/components.js +60 -164
- package/dist/src/components.js.map +1 -1
- package/dist/src/config/connection-gater.browser.d.ts +8 -0
- package/dist/src/config/connection-gater.browser.d.ts.map +1 -0
- package/dist/src/config/connection-gater.browser.js +27 -0
- package/dist/src/config/connection-gater.browser.js.map +1 -0
- package/dist/src/config/connection-gater.d.ts +6 -0
- package/dist/src/config/connection-gater.d.ts.map +1 -0
- package/dist/src/config/connection-gater.js +18 -0
- package/dist/src/config/connection-gater.js.map +1 -0
- package/dist/src/config.d.ts +2 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +0 -62
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-manager/auto-dial.d.ts +3 -0
- package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
- package/dist/src/connection-manager/auto-dial.js +36 -13
- package/dist/src/connection-manager/auto-dial.js.map +1 -1
- package/dist/src/connection-manager/connection-pruner.d.ts +4 -0
- package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
- package/dist/src/connection-manager/connection-pruner.js +23 -8
- package/dist/src/connection-manager/connection-pruner.js.map +1 -1
- package/dist/src/connection-manager/dial-queue.d.ts +2 -1
- package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
- package/dist/src/connection-manager/dial-queue.js +36 -14
- package/dist/src/connection-manager/dial-queue.js.map +1 -1
- package/dist/src/connection-manager/index.d.ts +8 -7
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +23 -34
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts +0 -10
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +7 -42
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/content-routing/utils.d.ts.map +1 -1
- package/dist/src/content-routing/utils.js +3 -1
- package/dist/src/content-routing/utils.js.map +1 -1
- package/dist/src/fetch/index.d.ts +13 -35
- package/dist/src/fetch/index.d.ts.map +1 -1
- package/dist/src/fetch/index.js +7 -9
- package/dist/src/fetch/index.js.map +1 -1
- package/dist/src/identify/identify.d.ts +53 -0
- package/dist/src/identify/identify.d.ts.map +1 -0
- package/dist/src/identify/identify.js +405 -0
- package/dist/src/identify/identify.js.map +1 -0
- package/dist/src/identify/index.d.ts +12 -58
- package/dist/src/identify/index.d.ts.map +1 -1
- package/dist/src/identify/index.js +5 -388
- package/dist/src/identify/index.js.map +1 -1
- package/dist/src/index.d.ts +13 -68
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/insecure/index.js.map +1 -1
- package/dist/src/libp2p.d.ts +11 -42
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +137 -196
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/peer-routing.d.ts +1 -38
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/peer-routing.js +0 -59
- package/dist/src/peer-routing.js.map +1 -1
- package/dist/src/ping/constants.d.ts +4 -0
- package/dist/src/ping/constants.d.ts.map +1 -1
- package/dist/src/ping/constants.js +10 -0
- package/dist/src/ping/constants.js.map +1 -1
- package/dist/src/ping/index.d.ts +10 -27
- package/dist/src/ping/index.d.ts.map +1 -1
- package/dist/src/ping/index.js +18 -21
- package/dist/src/ping/index.js.map +1 -1
- package/dist/src/registrar.d.ts +5 -2
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +27 -25
- package/dist/src/registrar.js.map +1 -1
- package/dist/src/transport-manager.d.ts +11 -4
- package/dist/src/transport-manager.d.ts.map +1 -1
- package/dist/src/transport-manager.js +19 -10
- package/dist/src/transport-manager.js.map +1 -1
- package/dist/src/upgrader.d.ts +15 -10
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +39 -48
- package/dist/src/upgrader.js.map +1 -1
- package/dist/src/upnp-nat/index.d.ts +42 -0
- package/dist/src/upnp-nat/index.d.ts.map +1 -0
- package/dist/src/{nat-manager.js → upnp-nat/index.js} +11 -7
- package/dist/src/upnp-nat/index.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/typedoc-urls.json +25 -10
- package/package.json +61 -45
- package/src/address-manager/index.ts +50 -8
- package/src/address-manager/utils.ts +14 -0
- package/src/autonat/constants.ts +17 -2
- package/src/autonat/index.ts +53 -45
- package/src/circuit-relay/server/advert-service.ts +2 -2
- package/src/circuit-relay/server/index.ts +11 -3
- package/src/circuit-relay/transport/discovery.ts +5 -3
- package/src/circuit-relay/transport/index.ts +9 -4
- package/src/circuit-relay/transport/listener.ts +38 -28
- package/src/circuit-relay/transport/reservation-store.ts +34 -20
- package/src/components.ts +71 -234
- package/src/config/connection-gater.browser.ts +31 -0
- package/src/config/connection-gater.ts +19 -0
- package/src/config.ts +3 -64
- package/src/connection-manager/auto-dial.ts +44 -15
- package/src/connection-manager/connection-pruner.ts +28 -8
- package/src/connection-manager/dial-queue.ts +41 -21
- package/src/connection-manager/index.ts +31 -43
- package/src/content-routing/index.ts +7 -55
- package/src/content-routing/utils.ts +3 -1
- package/src/fetch/index.ts +51 -14
- package/src/identify/identify.ts +518 -0
- package/src/identify/index.ts +17 -507
- package/src/index.ts +14 -77
- package/src/insecure/index.ts +4 -4
- package/src/libp2p.ts +139 -260
- package/src/peer-routing.ts +1 -101
- package/src/ping/constants.ts +11 -0
- package/src/ping/index.ts +32 -28
- package/src/registrar.ts +31 -27
- package/src/transport-manager.ts +27 -13
- package/src/upgrader.ts +62 -58
- package/src/{nat-manager.ts → upnp-nat/index.ts} +16 -17
- package/src/version.ts +1 -1
- package/dist/src/dht/dht-content-routing.d.ts +0 -17
- package/dist/src/dht/dht-content-routing.d.ts.map +0 -1
- package/dist/src/dht/dht-content-routing.js +0 -32
- package/dist/src/dht/dht-content-routing.js.map +0 -1
- package/dist/src/dht/dht-peer-routing.d.ts +0 -15
- package/dist/src/dht/dht-peer-routing.d.ts.map +0 -1
- package/dist/src/dht/dht-peer-routing.js +0 -26
- package/dist/src/dht/dht-peer-routing.js.map +0 -1
- package/dist/src/dht/dummy-dht.d.ts +0 -20
- package/dist/src/dht/dummy-dht.d.ts.map +0 -1
- package/dist/src/dht/dummy-dht.js +0 -46
- package/dist/src/dht/dummy-dht.js.map +0 -1
- package/dist/src/nat-manager.d.ts +0 -74
- package/dist/src/nat-manager.d.ts.map +0 -1
- package/dist/src/nat-manager.js.map +0 -1
- package/dist/src/peer-record-updater.d.ts +0 -24
- package/dist/src/peer-record-updater.d.ts.map +0 -1
- package/dist/src/peer-record-updater.js +0 -44
- package/dist/src/peer-record-updater.js.map +0 -1
- package/src/dht/dht-content-routing.ts +0 -44
- package/src/dht/dht-peer-routing.ts +0 -36
- package/src/dht/dummy-dht.ts +0 -60
- package/src/peer-record-updater.ts +0 -65
|
@@ -1,56 +1,19 @@
|
|
|
1
1
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
2
2
|
import type { PeerRouting } from '@libp2p/interface-peer-routing';
|
|
3
3
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
4
|
-
import type { Startable } from '@libp2p/interfaces/startable';
|
|
5
4
|
import type { PeerInfo } from '@libp2p/interface-peer-info';
|
|
6
5
|
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
7
|
-
export interface RefreshManagerInit {
|
|
8
|
-
/**
|
|
9
|
-
* Whether to enable the Refresh manager
|
|
10
|
-
*/
|
|
11
|
-
enabled?: boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Boot delay to start the Refresh Manager (in ms)
|
|
14
|
-
*/
|
|
15
|
-
bootDelay?: number;
|
|
16
|
-
/**
|
|
17
|
-
* Interval between each Refresh Manager run (in ms)
|
|
18
|
-
*/
|
|
19
|
-
interval?: number;
|
|
20
|
-
/**
|
|
21
|
-
* How long to let each refresh run (in ms)
|
|
22
|
-
*/
|
|
23
|
-
timeout?: number;
|
|
24
|
-
}
|
|
25
6
|
export interface PeerRoutingInit {
|
|
26
7
|
routers?: PeerRouting[];
|
|
27
|
-
refreshManager?: RefreshManagerInit;
|
|
28
8
|
}
|
|
29
9
|
export interface DefaultPeerRoutingComponents {
|
|
30
10
|
peerId: PeerId;
|
|
31
11
|
peerStore: PeerStore;
|
|
32
12
|
}
|
|
33
|
-
export declare class DefaultPeerRouting implements PeerRouting
|
|
13
|
+
export declare class DefaultPeerRouting implements PeerRouting {
|
|
34
14
|
private readonly components;
|
|
35
15
|
private readonly routers;
|
|
36
|
-
private readonly refreshManagerInit;
|
|
37
|
-
private timeoutId?;
|
|
38
|
-
private started;
|
|
39
|
-
private abortController?;
|
|
40
16
|
constructor(components: DefaultPeerRoutingComponents, init: PeerRoutingInit);
|
|
41
|
-
isStarted(): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Start peer routing service.
|
|
44
|
-
*/
|
|
45
|
-
start(): Promise<void>;
|
|
46
|
-
/**
|
|
47
|
-
* Recurrent task to find closest peers and add their addresses to the Address Book.
|
|
48
|
-
*/
|
|
49
|
-
_findClosestPeersTask(): Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* Stop peer routing service.
|
|
52
|
-
*/
|
|
53
|
-
stop(): Promise<void>;
|
|
54
17
|
/**
|
|
55
18
|
* Iterates over all peer routers in parallel to find the given peer
|
|
56
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE1B,UAAU,EAAE,4BAA4B,EAAE,IAAI,EAAE,eAAe;IAK5E;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BtE;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC;CAc3F"}
|
package/dist/src/peer-routing.js
CHANGED
|
@@ -2,74 +2,15 @@ import { logger } from '@libp2p/logger';
|
|
|
2
2
|
import { CodeError } from '@libp2p/interfaces/errors';
|
|
3
3
|
import { codes, messages } from './errors.js';
|
|
4
4
|
import { storeAddresses, uniquePeers, requirePeers } from './content-routing/utils.js';
|
|
5
|
-
import { TimeoutController } from 'timeout-abort-controller';
|
|
6
5
|
import merge from 'it-merge';
|
|
7
6
|
import { pipe } from 'it-pipe';
|
|
8
7
|
import first from 'it-first';
|
|
9
|
-
import drain from 'it-drain';
|
|
10
8
|
import filter from 'it-filter';
|
|
11
|
-
import { setDelayedInterval, clearDelayedInterval
|
|
12
|
-
// @ts-expect-error module with no types
|
|
13
|
-
} from 'set-delayed-interval';
|
|
14
|
-
import { setMaxListeners } from 'events';
|
|
15
9
|
const log = logger('libp2p:peer-routing');
|
|
16
10
|
export class DefaultPeerRouting {
|
|
17
11
|
constructor(components, init) {
|
|
18
12
|
this.components = components;
|
|
19
13
|
this.routers = init.routers ?? [];
|
|
20
|
-
this.refreshManagerInit = init.refreshManager ?? {};
|
|
21
|
-
this.started = false;
|
|
22
|
-
this._findClosestPeersTask = this._findClosestPeersTask.bind(this);
|
|
23
|
-
}
|
|
24
|
-
isStarted() {
|
|
25
|
-
return this.started;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Start peer routing service.
|
|
29
|
-
*/
|
|
30
|
-
async start() {
|
|
31
|
-
if (this.started || this.routers.length === 0 || this.timeoutId != null || this.refreshManagerInit.enabled === false) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
this.timeoutId = setDelayedInterval(this._findClosestPeersTask, this.refreshManagerInit.interval, this.refreshManagerInit.bootDelay);
|
|
35
|
-
this.started = true;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Recurrent task to find closest peers and add their addresses to the Address Book.
|
|
39
|
-
*/
|
|
40
|
-
async _findClosestPeersTask() {
|
|
41
|
-
if (this.abortController != null) {
|
|
42
|
-
// we are already running the query
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
try {
|
|
46
|
-
this.abortController = new TimeoutController(this.refreshManagerInit.timeout ?? 10e3);
|
|
47
|
-
// this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning
|
|
48
|
-
// appearing in the console
|
|
49
|
-
try {
|
|
50
|
-
// fails on node < 15.4
|
|
51
|
-
setMaxListeners?.(Infinity, this.abortController.signal);
|
|
52
|
-
}
|
|
53
|
-
catch { }
|
|
54
|
-
// nb getClosestPeers adds the addresses to the address book
|
|
55
|
-
await drain(this.getClosestPeers(this.components.peerId.toBytes(), { signal: this.abortController.signal }));
|
|
56
|
-
}
|
|
57
|
-
catch (err) {
|
|
58
|
-
log.error(err);
|
|
59
|
-
}
|
|
60
|
-
finally {
|
|
61
|
-
this.abortController?.clear();
|
|
62
|
-
this.abortController = undefined;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Stop peer routing service.
|
|
67
|
-
*/
|
|
68
|
-
async stop() {
|
|
69
|
-
clearDelayedInterval(this.timeoutId);
|
|
70
|
-
// abort query if it is in-flight
|
|
71
|
-
this.abortController?.abort();
|
|
72
|
-
this.started = false;
|
|
73
14
|
}
|
|
74
15
|
/**
|
|
75
16
|
* Iterates over all peer routers in parallel to find the given peer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-routing.js","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,4BAA4B,CAAA;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"peer-routing.js","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,8 @@ export declare const PROTOCOL = "/ipfs/ping/1.0.0";
|
|
|
2
2
|
export declare const PING_LENGTH = 32;
|
|
3
3
|
export declare const PROTOCOL_VERSION = "1.0.0";
|
|
4
4
|
export declare const PROTOCOL_NAME = "ping";
|
|
5
|
+
export declare const PROTOCOL_PREFIX = "ipfs";
|
|
6
|
+
export declare const TIMEOUT = 10000;
|
|
7
|
+
export declare const MAX_INBOUND_STREAMS = 2;
|
|
8
|
+
export declare const MAX_OUTBOUND_STREAMS = 1;
|
|
5
9
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,qBAAqB,CAAA;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,eAAO,MAAM,gBAAgB,UAAU,CAAA;AACvC,eAAO,MAAM,aAAa,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,qBAAqB,CAAA;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,eAAO,MAAM,gBAAgB,UAAU,CAAA;AACvC,eAAO,MAAM,aAAa,SAAS,CAAA;AACnC,eAAO,MAAM,eAAe,SAAS,CAAA;AACrC,eAAO,MAAM,OAAO,QAAQ,CAAA;AAQ5B,eAAO,MAAM,mBAAmB,IAAI,CAAA;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAA"}
|
|
@@ -2,4 +2,14 @@ export const PROTOCOL = '/ipfs/ping/1.0.0';
|
|
|
2
2
|
export const PING_LENGTH = 32;
|
|
3
3
|
export const PROTOCOL_VERSION = '1.0.0';
|
|
4
4
|
export const PROTOCOL_NAME = 'ping';
|
|
5
|
+
export const PROTOCOL_PREFIX = 'ipfs';
|
|
6
|
+
export const TIMEOUT = 10000;
|
|
7
|
+
// See https://github.com/libp2p/specs/blob/d4b5fb0152a6bb86cfd9ea/ping/ping.md?plain=1#L38-L43
|
|
8
|
+
// The dialing peer MUST NOT keep more than one outbound stream for the ping protocol per peer.
|
|
9
|
+
// The listening peer SHOULD accept at most two streams per peer since cross-stream behavior is
|
|
10
|
+
// non-linear and stream writes occur asynchronously. The listening peer may perceive the
|
|
11
|
+
// dialing peer closing and opening the wrong streams (for instance, closing stream B and
|
|
12
|
+
// opening stream A even though the dialing peer is opening stream B and closing stream A).
|
|
13
|
+
export const MAX_INBOUND_STREAMS = 2;
|
|
14
|
+
export const MAX_OUTBOUND_STREAMS = 1;
|
|
5
15
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAA;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAA;AAE5B,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,yFAAyF;AACzF,yFAAyF;AACzF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AACpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA"}
|
package/dist/src/ping/index.d.ts
CHANGED
|
@@ -1,40 +1,23 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Registrar } from '@libp2p/interface-registrar';
|
|
2
2
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
3
|
-
import type { Startable } from '@libp2p/interfaces/startable';
|
|
4
3
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
5
4
|
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
5
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
6
|
+
export interface PingService {
|
|
7
|
+
ping: (peer: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions) => Promise<number>;
|
|
8
|
+
}
|
|
6
9
|
export interface PingServiceInit {
|
|
7
|
-
protocolPrefix
|
|
8
|
-
maxInboundStreams
|
|
9
|
-
maxOutboundStreams
|
|
10
|
+
protocolPrefix?: string;
|
|
11
|
+
maxInboundStreams?: number;
|
|
12
|
+
maxOutboundStreams?: number;
|
|
10
13
|
/**
|
|
11
14
|
* How long we should wait for a ping response
|
|
12
15
|
*/
|
|
13
|
-
timeout
|
|
16
|
+
timeout?: number;
|
|
14
17
|
}
|
|
15
18
|
export interface PingServiceComponents {
|
|
16
19
|
registrar: Registrar;
|
|
17
20
|
connectionManager: ConnectionManager;
|
|
18
21
|
}
|
|
19
|
-
export declare
|
|
20
|
-
readonly protocol: string;
|
|
21
|
-
private readonly components;
|
|
22
|
-
private started;
|
|
23
|
-
private readonly init;
|
|
24
|
-
constructor(components: PingServiceComponents, init: PingServiceInit);
|
|
25
|
-
start(): Promise<void>;
|
|
26
|
-
stop(): Promise<void>;
|
|
27
|
-
isStarted(): boolean;
|
|
28
|
-
/**
|
|
29
|
-
* A handler to register with Libp2p to process ping messages
|
|
30
|
-
*/
|
|
31
|
-
handleMessage(data: IncomingStreamData): void;
|
|
32
|
-
/**
|
|
33
|
-
* Ping a given peer and wait for its response, getting the operation latency.
|
|
34
|
-
*
|
|
35
|
-
* @param {PeerId|Multiaddr} peer
|
|
36
|
-
* @returns {Promise<number>}
|
|
37
|
-
*/
|
|
38
|
-
ping(peer: PeerId, options?: AbortOptions): Promise<number>;
|
|
39
|
-
}
|
|
22
|
+
export declare function pingService(init?: PingServiceInit): (components: PingServiceComponents) => PingService;
|
|
40
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAItD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1F;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAkGD,wBAAgB,WAAW,CAAE,IAAI,GAAE,eAAoB,GAAG,CAAC,UAAU,EAAE,qBAAqB,KAAK,WAAW,CAE3G"}
|
package/dist/src/ping/index.js
CHANGED
|
@@ -5,22 +5,24 @@ import { randomBytes } from '@libp2p/crypto';
|
|
|
5
5
|
import { pipe } from 'it-pipe';
|
|
6
6
|
import first from 'it-first';
|
|
7
7
|
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
8
|
-
import { PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION } from './constants.js';
|
|
8
|
+
import { PROTOCOL_PREFIX, PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION, TIMEOUT, MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS } from './constants.js';
|
|
9
9
|
import { abortableDuplex } from 'abortable-iterator';
|
|
10
|
-
import { TimeoutController } from 'timeout-abort-controller';
|
|
11
10
|
import { setMaxListeners } from 'events';
|
|
11
|
+
import { anySignal } from 'any-signal';
|
|
12
12
|
const log = logger('libp2p:ping');
|
|
13
|
-
|
|
13
|
+
class DefaultPingService {
|
|
14
14
|
constructor(components, init) {
|
|
15
15
|
this.components = components;
|
|
16
16
|
this.started = false;
|
|
17
|
-
this.protocol = `/${init.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;
|
|
18
|
-
this.
|
|
17
|
+
this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;
|
|
18
|
+
this.timeout = init.timeout ?? TIMEOUT;
|
|
19
|
+
this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS;
|
|
20
|
+
this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS;
|
|
19
21
|
}
|
|
20
22
|
async start() {
|
|
21
23
|
await this.components.registrar.handle(this.protocol, this.handleMessage, {
|
|
22
|
-
maxInboundStreams: this.
|
|
23
|
-
maxOutboundStreams: this.
|
|
24
|
+
maxInboundStreams: this.maxInboundStreams,
|
|
25
|
+
maxOutboundStreams: this.maxOutboundStreams
|
|
24
26
|
});
|
|
25
27
|
this.started = true;
|
|
26
28
|
}
|
|
@@ -52,19 +54,13 @@ export class PingService {
|
|
|
52
54
|
const start = Date.now();
|
|
53
55
|
const data = randomBytes(PING_LENGTH);
|
|
54
56
|
const connection = await this.components.connectionManager.openConnection(peer, options);
|
|
55
|
-
let timeoutController;
|
|
56
|
-
let signal = options.signal;
|
|
57
57
|
let stream;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
try {
|
|
63
|
-
// fails on node < 15.4
|
|
64
|
-
setMaxListeners?.(Infinity, timeoutController.signal);
|
|
65
|
-
}
|
|
66
|
-
catch { }
|
|
58
|
+
const signal = anySignal([AbortSignal.timeout(this.timeout), options?.signal]);
|
|
59
|
+
try {
|
|
60
|
+
// fails on node < 15.4
|
|
61
|
+
setMaxListeners?.(Infinity, signal);
|
|
67
62
|
}
|
|
63
|
+
catch { }
|
|
68
64
|
try {
|
|
69
65
|
stream = await connection.newStream([this.protocol], {
|
|
70
66
|
signal
|
|
@@ -79,13 +75,14 @@ export class PingService {
|
|
|
79
75
|
return end - start;
|
|
80
76
|
}
|
|
81
77
|
finally {
|
|
82
|
-
if (timeoutController != null) {
|
|
83
|
-
timeoutController.clear();
|
|
84
|
-
}
|
|
85
78
|
if (stream != null) {
|
|
86
79
|
stream.close();
|
|
87
80
|
}
|
|
81
|
+
signal.clear();
|
|
88
82
|
}
|
|
89
83
|
}
|
|
90
84
|
}
|
|
85
|
+
export function pingService(init = {}) {
|
|
86
|
+
return (components) => new DefaultPingService(components, init);
|
|
87
|
+
}
|
|
91
88
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/registrar.d.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { StreamHandlerOptions, StreamHandlerRecord } from '@libp2p/interface-registrar';
|
|
2
2
|
import type { Registrar, StreamHandler, Topology } from '@libp2p/interface-registrar';
|
|
3
|
-
import type {
|
|
3
|
+
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
4
4
|
import type { Connection } from '@libp2p/interface-connection';
|
|
5
5
|
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
6
6
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
7
|
+
import type { EventEmitter } from '@libp2p/interfaces/events';
|
|
8
|
+
import type { Libp2pEvents, PeerUpdate } from '@libp2p/interface-libp2p';
|
|
7
9
|
export declare const DEFAULT_MAX_INBOUND_STREAMS = 32;
|
|
8
10
|
export declare const DEFAULT_MAX_OUTBOUND_STREAMS = 64;
|
|
9
11
|
export interface RegistrarComponents {
|
|
10
12
|
peerId: PeerId;
|
|
11
13
|
connectionManager: ConnectionManager;
|
|
12
14
|
peerStore: PeerStore;
|
|
15
|
+
events: EventEmitter<Libp2pEvents>;
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
18
|
* Responsible for notifying registered protocols of events in the network.
|
|
@@ -51,6 +54,6 @@ export declare class DefaultRegistrar implements Registrar {
|
|
|
51
54
|
/**
|
|
52
55
|
* Check if a new peer support the multicodecs for this topology
|
|
53
56
|
*/
|
|
54
|
-
|
|
57
|
+
_onPeerUpdate(evt: CustomEvent<PeerUpdate>): void;
|
|
55
58
|
}
|
|
56
59
|
//# sourceMappingURL=registrar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/registrar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/registrar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAIxE,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAC7C,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEnC,UAAU,EAAE,mBAAmB;IAc5C,YAAY,IAAK,MAAM,EAAE;IAMzB,UAAU,CAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAUlD,aAAa,CAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAY5C;;OAEG;IACG,MAAM,CAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnG;;;OAGG;IACG,QAAQ,CAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5D;;OAEG;IACG,QAAQ,CAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBtE;;OAEG;IACH,UAAU,CAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAY7B;;OAEG;IACH,aAAa,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI;IAuBlD;;;OAGG;IACH,UAAU,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI;IAuB/C;;OAEG;IACH,aAAa,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI;CAoCnD"}
|
package/dist/src/registrar.js
CHANGED
|
@@ -15,16 +15,14 @@ export class DefaultRegistrar {
|
|
|
15
15
|
this.handlers = new Map();
|
|
16
16
|
this.components = components;
|
|
17
17
|
this._onDisconnect = this._onDisconnect.bind(this);
|
|
18
|
-
this.
|
|
18
|
+
this._onPeerUpdate = this._onPeerUpdate.bind(this);
|
|
19
19
|
this._onConnect = this._onConnect.bind(this);
|
|
20
|
-
this.components.
|
|
21
|
-
this.components.
|
|
22
|
-
|
|
23
|
-
this.components.peerStore.addEventListener('change:protocols', this._onProtocolChange);
|
|
20
|
+
this.components.events.addEventListener('connection:close', this._onDisconnect);
|
|
21
|
+
this.components.events.addEventListener('connection:open', this._onConnect);
|
|
22
|
+
this.components.events.addEventListener('peer:update', this._onPeerUpdate);
|
|
24
23
|
}
|
|
25
24
|
getProtocols() {
|
|
26
25
|
return Array.from(new Set([
|
|
27
|
-
...this.topologies.keys(),
|
|
28
26
|
...this.handlers.keys()
|
|
29
27
|
])).sort();
|
|
30
28
|
}
|
|
@@ -59,8 +57,10 @@ export class DefaultRegistrar {
|
|
|
59
57
|
handler,
|
|
60
58
|
options
|
|
61
59
|
});
|
|
62
|
-
// Add new
|
|
63
|
-
await this.components.peerStore.
|
|
60
|
+
// Add new protocol to self protocols in the peer store
|
|
61
|
+
await this.components.peerStore.merge(this.components.peerId, {
|
|
62
|
+
protocols: [protocol]
|
|
63
|
+
});
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
66
|
* Removes the handler for each protocol. The protocol
|
|
@@ -71,8 +71,10 @@ export class DefaultRegistrar {
|
|
|
71
71
|
protocolList.forEach(protocol => {
|
|
72
72
|
this.handlers.delete(protocol);
|
|
73
73
|
});
|
|
74
|
-
//
|
|
75
|
-
await this.components.peerStore.
|
|
74
|
+
// Update self protocols in the peer store
|
|
75
|
+
await this.components.peerStore.patch(this.components.peerId, {
|
|
76
|
+
protocols: protocolList
|
|
77
|
+
});
|
|
76
78
|
}
|
|
77
79
|
/**
|
|
78
80
|
* Register handlers for a set of multicodecs given
|
|
@@ -112,9 +114,9 @@ export class DefaultRegistrar {
|
|
|
112
114
|
*/
|
|
113
115
|
_onDisconnect(evt) {
|
|
114
116
|
const connection = evt.detail;
|
|
115
|
-
void this.components.peerStore.
|
|
116
|
-
.then(
|
|
117
|
-
for (const protocol of
|
|
117
|
+
void this.components.peerStore.get(connection.remotePeer)
|
|
118
|
+
.then(peer => {
|
|
119
|
+
for (const protocol of peer.protocols) {
|
|
118
120
|
const topologies = this.topologies.get(protocol);
|
|
119
121
|
if (topologies == null) {
|
|
120
122
|
// no topologies are interested in this protocol
|
|
@@ -126,7 +128,7 @@ export class DefaultRegistrar {
|
|
|
126
128
|
}
|
|
127
129
|
})
|
|
128
130
|
.catch(err => {
|
|
129
|
-
log.error(err);
|
|
131
|
+
log.error('could not inform topologies of disconnecting peer %p', connection.remotePeer, err);
|
|
130
132
|
});
|
|
131
133
|
}
|
|
132
134
|
/**
|
|
@@ -135,9 +137,9 @@ export class DefaultRegistrar {
|
|
|
135
137
|
*/
|
|
136
138
|
_onConnect(evt) {
|
|
137
139
|
const connection = evt.detail;
|
|
138
|
-
void this.components.peerStore.
|
|
139
|
-
.then(
|
|
140
|
-
for (const protocol of
|
|
140
|
+
void this.components.peerStore.get(connection.remotePeer)
|
|
141
|
+
.then(peer => {
|
|
142
|
+
for (const protocol of peer.protocols) {
|
|
141
143
|
const topologies = this.topologies.get(protocol);
|
|
142
144
|
if (topologies == null) {
|
|
143
145
|
// no topologies are interested in this protocol
|
|
@@ -149,16 +151,16 @@ export class DefaultRegistrar {
|
|
|
149
151
|
}
|
|
150
152
|
})
|
|
151
153
|
.catch(err => {
|
|
152
|
-
log.error(err);
|
|
154
|
+
log.error('could not inform topologies of connecting peer %p', connection.remotePeer, err);
|
|
153
155
|
});
|
|
154
156
|
}
|
|
155
157
|
/**
|
|
156
158
|
* Check if a new peer support the multicodecs for this topology
|
|
157
159
|
*/
|
|
158
|
-
|
|
159
|
-
const {
|
|
160
|
-
const removed =
|
|
161
|
-
const added = protocols.filter(protocol => !
|
|
160
|
+
_onPeerUpdate(evt) {
|
|
161
|
+
const { peer, previous } = evt.detail;
|
|
162
|
+
const removed = (previous?.protocols ?? []).filter(protocol => !peer.protocols.includes(protocol));
|
|
163
|
+
const added = peer.protocols.filter(protocol => !(previous?.protocols ?? []).includes(protocol));
|
|
162
164
|
for (const protocol of removed) {
|
|
163
165
|
const topologies = this.topologies.get(protocol);
|
|
164
166
|
if (topologies == null) {
|
|
@@ -166,7 +168,7 @@ export class DefaultRegistrar {
|
|
|
166
168
|
continue;
|
|
167
169
|
}
|
|
168
170
|
for (const topology of topologies.values()) {
|
|
169
|
-
topology.onDisconnect(
|
|
171
|
+
topology.onDisconnect(peer.id);
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
174
|
for (const protocol of added) {
|
|
@@ -176,11 +178,11 @@ export class DefaultRegistrar {
|
|
|
176
178
|
continue;
|
|
177
179
|
}
|
|
178
180
|
for (const topology of topologies.values()) {
|
|
179
|
-
const connection = this.components.connectionManager.getConnections(
|
|
181
|
+
const connection = this.components.connectionManager.getConnections(peer.id)[0];
|
|
180
182
|
if (connection == null) {
|
|
181
183
|
continue;
|
|
182
184
|
}
|
|
183
|
-
topology.onConnect(
|
|
185
|
+
topology.onConnect(peer.id, connection);
|
|
184
186
|
}
|
|
185
187
|
}
|
|
186
188
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrar.js","sourceRoot":"","sources":["../../src/registrar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,UAAU,EAA6C,MAAM,6BAA6B,CAAA;AACnG,OAAO,KAAK,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"registrar.js","sourceRoot":"","sources":["../../src/registrar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { FaultTolerance } from '@libp2p/interface-transport';
|
|
2
|
-
import type { Transport, TransportManager,
|
|
2
|
+
import type { Listener, Transport, TransportManager, Upgrader } from '@libp2p/interface-transport';
|
|
3
3
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
4
4
|
import type { Connection } from '@libp2p/interface-connection';
|
|
5
5
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
6
|
-
import { EventEmitter } from '@libp2p/interfaces/events';
|
|
6
|
+
import type { EventEmitter } from '@libp2p/interfaces/events';
|
|
7
7
|
import type { Startable } from '@libp2p/interfaces/startable';
|
|
8
8
|
import type { Metrics } from '@libp2p/interface-metrics';
|
|
9
9
|
import type { AddressManager } from '@libp2p/interface-address-manager';
|
|
10
|
+
import type { Libp2pEvents } from '@libp2p/interface-libp2p';
|
|
10
11
|
export interface TransportManagerInit {
|
|
11
12
|
faultTolerance?: FaultTolerance;
|
|
12
13
|
}
|
|
@@ -14,8 +15,9 @@ export interface DefaultTransportManagerComponents {
|
|
|
14
15
|
metrics?: Metrics;
|
|
15
16
|
addressManager: AddressManager;
|
|
16
17
|
upgrader: Upgrader;
|
|
18
|
+
events: EventEmitter<Libp2pEvents>;
|
|
17
19
|
}
|
|
18
|
-
export declare class DefaultTransportManager
|
|
20
|
+
export declare class DefaultTransportManager implements TransportManager, Startable {
|
|
19
21
|
private readonly components;
|
|
20
22
|
private readonly transports;
|
|
21
23
|
private readonly listeners;
|
|
@@ -27,7 +29,8 @@ export declare class DefaultTransportManager extends EventEmitter<TransportManag
|
|
|
27
29
|
*/
|
|
28
30
|
add(transport: Transport): void;
|
|
29
31
|
isStarted(): boolean;
|
|
30
|
-
start():
|
|
32
|
+
start(): void;
|
|
33
|
+
afterStart(): Promise<void>;
|
|
31
34
|
/**
|
|
32
35
|
* Stops all listeners
|
|
33
36
|
*/
|
|
@@ -44,6 +47,10 @@ export declare class DefaultTransportManager extends EventEmitter<TransportManag
|
|
|
44
47
|
* Returns all the transports instances
|
|
45
48
|
*/
|
|
46
49
|
getTransports(): Transport[];
|
|
50
|
+
/**
|
|
51
|
+
* Returns all the listener instances
|
|
52
|
+
*/
|
|
53
|
+
getListeners(): Listener[];
|
|
47
54
|
/**
|
|
48
55
|
* Finds a transport that matches the given Multiaddr
|
|
49
56
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport-manager.d.ts","sourceRoot":"","sources":["../../src/transport-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"transport-manager.d.ts","sourceRoot":"","sources":["../../src/transport-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAI5D,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED,qBAAa,uBAAwB,YAAW,gBAAgB,EAAE,SAAS;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,iCAAiC,EAAE,IAAI,GAAE,oBAAyB;IAW3F;;OAEG;IACH,GAAG,CAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAoBhC,SAAS,IAAK,OAAO;IAIrB,KAAK,IAAK,IAAI;IAIR,UAAU,IAAK,OAAO,CAAC,IAAI,CAAC;IAOlC;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAwB5B;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBvE;;OAEG;IACH,QAAQ,IAAK,SAAS,EAAE;IAUxB;;OAEG;IACH,aAAa,IAAK,SAAS,EAAE;IAI7B;;OAEG;IACH,YAAY,IAAK,QAAQ,EAAE;IAI3B;;OAEG;IACH,qBAAqB,CAAE,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;IAU5D;;OAEG;IACG,MAAM,CAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6EhD;;;OAGG;IACG,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC;;;;;OAKG;IACG,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;CAQlC"}
|