libp2p 0.40.0-030dbc8 → 0.40.0-2d984ed
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/connection/index.d.ts +83 -0
- package/dist/src/connection/index.d.ts.map +1 -0
- package/dist/src/connection/index.js +96 -0
- package/dist/src/connection/index.js.map +1 -0
- package/dist/src/connection-manager/dialer/index.d.ts +12 -12
- package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
- package/dist/src/connection-manager/dialer/index.js +79 -54
- package/dist/src/connection-manager/dialer/index.js.map +1 -1
- package/dist/src/connection-manager/index.d.ts +2 -2
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +15 -3
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/get-peer.d.ts +2 -2
- package/dist/src/get-peer.d.ts.map +1 -1
- package/dist/src/get-peer.js +2 -5
- package/dist/src/get-peer.js.map +1 -1
- package/dist/src/index.d.ts +8 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/keychain/index.d.ts +1 -1
- package/dist/src/keychain/index.d.ts.map +1 -1
- package/dist/src/libp2p.d.ts +3 -3
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/registrar.d.ts +5 -0
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +25 -0
- package/dist/src/registrar.js.map +1 -1
- package/dist/src/upgrader.d.ts +1 -1
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +42 -23
- package/dist/src/upgrader.js.map +1 -1
- package/package.json +2 -2
- package/src/connection/index.ts +171 -0
- package/src/connection-manager/dialer/index.ts +96 -64
- package/src/connection-manager/index.ts +15 -3
- package/src/get-peer.ts +3 -7
- package/src/index.ts +13 -5
- package/src/keychain/index.ts +1 -1
- package/src/libp2p.ts +3 -3
- package/src/registrar.ts +29 -2
- package/src/upgrader.ts +44 -22
- package/src/version.ts +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
2
|
+
import { symbol } from '@libp2p/interface-connection';
|
|
3
|
+
import type { Connection, ConnectionStat, Stream } from '@libp2p/interface-connection';
|
|
4
|
+
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
5
|
+
import type { AbortOptions } from '@libp2p/interfaces';
|
|
6
|
+
interface ConnectionInit {
|
|
7
|
+
remoteAddr: Multiaddr;
|
|
8
|
+
remotePeer: PeerId;
|
|
9
|
+
newStream: (protocols: string[], options?: AbortOptions) => Promise<Stream>;
|
|
10
|
+
close: () => Promise<void>;
|
|
11
|
+
getStreams: () => Stream[];
|
|
12
|
+
stat: ConnectionStat;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* An implementation of the js-libp2p connection.
|
|
16
|
+
* Any libp2p transport should use an upgrader to return this connection.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ConnectionImpl implements Connection {
|
|
19
|
+
/**
|
|
20
|
+
* Connection identifier.
|
|
21
|
+
*/
|
|
22
|
+
readonly id: string;
|
|
23
|
+
/**
|
|
24
|
+
* Observed multiaddr of the remote peer
|
|
25
|
+
*/
|
|
26
|
+
readonly remoteAddr: Multiaddr;
|
|
27
|
+
/**
|
|
28
|
+
* Remote peer id
|
|
29
|
+
*/
|
|
30
|
+
readonly remotePeer: PeerId;
|
|
31
|
+
/**
|
|
32
|
+
* Connection metadata
|
|
33
|
+
*/
|
|
34
|
+
readonly stat: ConnectionStat;
|
|
35
|
+
/**
|
|
36
|
+
* User provided tags
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
tags: string[];
|
|
40
|
+
/**
|
|
41
|
+
* Reference to the new stream function of the multiplexer
|
|
42
|
+
*/
|
|
43
|
+
private readonly _newStream;
|
|
44
|
+
/**
|
|
45
|
+
* Reference to the close function of the raw connection
|
|
46
|
+
*/
|
|
47
|
+
private readonly _close;
|
|
48
|
+
/**
|
|
49
|
+
* Reference to the getStreams function of the muxer
|
|
50
|
+
*/
|
|
51
|
+
private readonly _getStreams;
|
|
52
|
+
private _closing;
|
|
53
|
+
/**
|
|
54
|
+
* An implementation of the js-libp2p connection.
|
|
55
|
+
* Any libp2p transport should use an upgrader to return this connection.
|
|
56
|
+
*/
|
|
57
|
+
constructor(init: ConnectionInit);
|
|
58
|
+
get [Symbol.toStringTag](): string;
|
|
59
|
+
get [symbol](): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Get all the streams of the muxer
|
|
62
|
+
*/
|
|
63
|
+
get streams(): Stream[];
|
|
64
|
+
/**
|
|
65
|
+
* Create a new stream from this connection
|
|
66
|
+
*/
|
|
67
|
+
newStream(protocols: string | string[], options?: AbortOptions): Promise<Stream>;
|
|
68
|
+
/**
|
|
69
|
+
* Add a stream when it is opened to the registry
|
|
70
|
+
*/
|
|
71
|
+
addStream(stream: Stream): void;
|
|
72
|
+
/**
|
|
73
|
+
* Remove stream registry after it is closed
|
|
74
|
+
*/
|
|
75
|
+
removeStream(id: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* Close the connection
|
|
78
|
+
*/
|
|
79
|
+
close(): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
export declare function createConnection(init: ConnectionInit): Connection;
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAItD,UAAU,cAAc;IACtB,UAAU,EAAE,SAAS,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3E,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,UAAU,EAAE,MAAM,MAAM,EAAE,CAAA;IAC1B,IAAI,EAAE,cAAc,CAAA;CACrB;AAED;;;GAGG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C;;OAEG;IACH,SAAgB,EAAE,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,SAAgB,UAAU,EAAE,SAAS,CAAA;IAErC;;OAEG;IACH,SAAgB,UAAU,EAAE,MAAM,CAAA;IAElC;;OAEG;IACH,SAAgB,IAAI,EAAE,cAAc,CAAA;IAEpC;;;OAGG;IACI,IAAI,EAAE,MAAM,EAAE,CAAA;IAErB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkE;IAE7F;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAE5C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAE5C,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;OAGG;gBACU,IAAI,EAAE,cAAc;IAiBjC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,IAAI,CAAC,MAAM,CAAC,YAEX;IAED;;OAEG;IACH,IAAI,OAAO,aAEV;IAED;;OAEG;IACG,SAAS,CAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBvF;;OAEG;IACH,SAAS,CAAE,MAAM,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAE,EAAE,EAAE,MAAM;IAIxB;;OAEG;IACG,KAAK;CAsBZ;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,cAAc,GAAG,UAAU,CAElE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import errCode from 'err-code';
|
|
2
|
+
import { OPEN, CLOSING, CLOSED } from '@libp2p/interface-connection/status';
|
|
3
|
+
import { symbol } from '@libp2p/interface-connection';
|
|
4
|
+
import { logger } from '@libp2p/logger';
|
|
5
|
+
const log = logger('libp2p:connection');
|
|
6
|
+
/**
|
|
7
|
+
* An implementation of the js-libp2p connection.
|
|
8
|
+
* Any libp2p transport should use an upgrader to return this connection.
|
|
9
|
+
*/
|
|
10
|
+
export class ConnectionImpl {
|
|
11
|
+
/**
|
|
12
|
+
* An implementation of the js-libp2p connection.
|
|
13
|
+
* Any libp2p transport should use an upgrader to return this connection.
|
|
14
|
+
*/
|
|
15
|
+
constructor(init) {
|
|
16
|
+
const { remoteAddr, remotePeer, newStream, close, getStreams, stat } = init;
|
|
17
|
+
this.id = `${(parseInt(String(Math.random() * 1e9))).toString(36)}${Date.now()}`;
|
|
18
|
+
this.remoteAddr = remoteAddr;
|
|
19
|
+
this.remotePeer = remotePeer;
|
|
20
|
+
this.stat = {
|
|
21
|
+
...stat,
|
|
22
|
+
status: OPEN
|
|
23
|
+
};
|
|
24
|
+
this._newStream = newStream;
|
|
25
|
+
this._close = close;
|
|
26
|
+
this._getStreams = getStreams;
|
|
27
|
+
this.tags = [];
|
|
28
|
+
this._closing = false;
|
|
29
|
+
}
|
|
30
|
+
get [Symbol.toStringTag]() {
|
|
31
|
+
return 'Connection';
|
|
32
|
+
}
|
|
33
|
+
get [symbol]() {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get all the streams of the muxer
|
|
38
|
+
*/
|
|
39
|
+
get streams() {
|
|
40
|
+
return this._getStreams();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create a new stream from this connection
|
|
44
|
+
*/
|
|
45
|
+
async newStream(protocols, options) {
|
|
46
|
+
if (this.stat.status === CLOSING) {
|
|
47
|
+
throw errCode(new Error('the connection is being closed'), 'ERR_CONNECTION_BEING_CLOSED');
|
|
48
|
+
}
|
|
49
|
+
if (this.stat.status === CLOSED) {
|
|
50
|
+
throw errCode(new Error('the connection is closed'), 'ERR_CONNECTION_CLOSED');
|
|
51
|
+
}
|
|
52
|
+
if (!Array.isArray(protocols)) {
|
|
53
|
+
protocols = [protocols];
|
|
54
|
+
}
|
|
55
|
+
const stream = await this._newStream(protocols, options);
|
|
56
|
+
stream.stat.direction = 'outbound';
|
|
57
|
+
return stream;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Add a stream when it is opened to the registry
|
|
61
|
+
*/
|
|
62
|
+
addStream(stream) {
|
|
63
|
+
stream.stat.direction = 'inbound';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Remove stream registry after it is closed
|
|
67
|
+
*/
|
|
68
|
+
removeStream(id) {
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Close the connection
|
|
72
|
+
*/
|
|
73
|
+
async close() {
|
|
74
|
+
if (this.stat.status === CLOSED || this._closing) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
this.stat.status = CLOSING;
|
|
78
|
+
// close all streams - this can throw if we're not multiplexed
|
|
79
|
+
try {
|
|
80
|
+
this.streams.forEach(s => s.close());
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
log.error(err);
|
|
84
|
+
}
|
|
85
|
+
// Close raw connection
|
|
86
|
+
this._closing = true;
|
|
87
|
+
await this._close();
|
|
88
|
+
this._closing = false;
|
|
89
|
+
this.stat.timeline.close = Date.now();
|
|
90
|
+
this.stat.status = CLOSED;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export function createConnection(init) {
|
|
94
|
+
return new ConnectionImpl(init);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAGrD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGvC,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAWvC;;;GAGG;AACH,MAAM,OAAO,cAAc;IA4CzB;;;OAGG;IACH,YAAa,IAAoB;QAC/B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAE3E,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QAChF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG;YACV,GAAG,IAAI;YACP,MAAM,EAAE,IAAI;SACb,CAAA;QACD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QACd,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAE,SAA4B,EAAE,OAAsB;QACnE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;YAChC,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,6BAA6B,CAAC,CAAA;SAC1F;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YAC/B,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,EAAE,uBAAuB,CAAC,CAAA;SAC9E;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7B,SAAS,GAAG,CAAC,SAAS,CAAC,CAAA;SACxB;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAExD,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAA;QAElC,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,SAAS,CAAE,MAAc;QACvB,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IACnC,CAAC;IAED;;OAEG;IACH,YAAY,CAAE,EAAU;IAExB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChD,OAAM;SACP;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;QAE1B,8DAA8D;QAC9D,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;SACrC;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACf;QAED,uBAAuB;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAE,IAAoB;IACpD,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Multiaddr, Resolver } from '@multiformats/multiaddr';
|
|
2
2
|
import { TimeoutController } from 'timeout-abort-controller';
|
|
3
3
|
import { DialRequest } from './dial-request.js';
|
|
4
4
|
import type { Connection, ConnectionGater } from '@libp2p/interface-connection';
|
|
5
5
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
6
6
|
import type { Startable } from '@libp2p/interfaces/startable';
|
|
7
|
-
import
|
|
7
|
+
import { PeerId } from '@libp2p/interface-peer-id';
|
|
8
8
|
import type { AddressSorter, PeerStore } from '@libp2p/interface-peer-store';
|
|
9
9
|
import type { Metrics } from '@libp2p/interface-metrics';
|
|
10
10
|
import type { Dialer } from '@libp2p/interface-connection-manager';
|
|
@@ -64,7 +64,7 @@ export declare class DefaultDialer implements Startable, Dialer {
|
|
|
64
64
|
private readonly maxDialsPerPeer;
|
|
65
65
|
tokens: number[];
|
|
66
66
|
pendingDials: Map<string, PendingDial>;
|
|
67
|
-
pendingDialTargets: Map<string,
|
|
67
|
+
pendingDialTargets: Map<string, AbortController>;
|
|
68
68
|
private started;
|
|
69
69
|
constructor(components: DefaultDialerComponents, init?: DialerInit);
|
|
70
70
|
isStarted(): boolean;
|
|
@@ -78,20 +78,20 @@ export declare class DefaultDialer implements Startable, Dialer {
|
|
|
78
78
|
* The dial to the first address that is successfully able to upgrade a connection
|
|
79
79
|
* will be used.
|
|
80
80
|
*/
|
|
81
|
-
dial(
|
|
82
|
-
/**
|
|
83
|
-
* Connects to a given `peer` by dialing all of its known addresses.
|
|
84
|
-
* The dial to the first address that is successfully able to upgrade a connection
|
|
85
|
-
* will be used.
|
|
86
|
-
*/
|
|
87
|
-
_createCancellableDialTarget(peer: PeerId, options: AbortOptions): Promise<DialTarget>;
|
|
81
|
+
dial(peerIdOrMultiaddr: PeerId | Multiaddr, options?: AbortOptions): Promise<Connection>;
|
|
88
82
|
/**
|
|
89
83
|
* Creates a DialTarget. The DialTarget is used to create and track
|
|
90
84
|
* the DialRequest to a given peer.
|
|
91
|
-
*
|
|
85
|
+
*
|
|
86
|
+
* If a multiaddr is received it should be the only address attempted.
|
|
87
|
+
*
|
|
92
88
|
* Multiaddrs not supported by the available transports will be filtered out.
|
|
93
89
|
*/
|
|
94
|
-
_createDialTarget(
|
|
90
|
+
_createDialTarget(peerIdOrMultiaddr: PeerId | Multiaddr, options: AbortOptions): Promise<DialTarget>;
|
|
91
|
+
/**
|
|
92
|
+
* Loads a list of addresses from the peer store for the passed peer id
|
|
93
|
+
*/
|
|
94
|
+
_loadAddresses(peer: PeerId): Promise<Multiaddr[]>;
|
|
95
95
|
/**
|
|
96
96
|
* Creates a PendingDial that wraps the underlying DialRequest
|
|
97
97
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { logger } from '@libp2p/logger';
|
|
2
|
-
import all from 'it-all';
|
|
3
|
-
import filter from 'it-filter';
|
|
4
|
-
import { pipe } from 'it-pipe';
|
|
5
2
|
import errCode from 'err-code';
|
|
6
|
-
import { multiaddr, resolvers } from '@multiformats/multiaddr';
|
|
3
|
+
import { isMultiaddr, multiaddr, resolvers } from '@multiformats/multiaddr';
|
|
7
4
|
import { TimeoutController } from 'timeout-abort-controller';
|
|
8
|
-
import { AbortError } from '@libp2p/interfaces/errors';
|
|
9
5
|
import { anySignal } from 'any-signal';
|
|
10
6
|
import { setMaxListeners } from 'events';
|
|
11
7
|
import { DialRequest } from './dial-request.js';
|
|
@@ -13,9 +9,8 @@ import { publicAddressesFirst } from '@libp2p/utils/address-sort';
|
|
|
13
9
|
import { trackedMap } from '@libp2p/tracked-map';
|
|
14
10
|
import { codes } from '../../errors.js';
|
|
15
11
|
import { DIAL_TIMEOUT, MAX_PARALLEL_DIALS, MAX_PER_PEER_DIALS, MAX_ADDRS_TO_DIAL } from '../../constants.js';
|
|
12
|
+
import { isPeerId } from '@libp2p/interface-peer-id';
|
|
16
13
|
import { getPeer } from '../../get-peer.js';
|
|
17
|
-
import sort from 'it-sort';
|
|
18
|
-
import map from 'it-map';
|
|
19
14
|
const log = logger('libp2p:dialer');
|
|
20
15
|
export class DefaultDialer {
|
|
21
16
|
constructor(components, init = {}) {
|
|
@@ -59,7 +54,7 @@ export class DefaultDialer {
|
|
|
59
54
|
}
|
|
60
55
|
this.pendingDials.clear();
|
|
61
56
|
for (const pendingTarget of this.pendingDialTargets.values()) {
|
|
62
|
-
pendingTarget.
|
|
57
|
+
pendingTarget.abort();
|
|
63
58
|
}
|
|
64
59
|
this.pendingDialTargets.clear();
|
|
65
60
|
}
|
|
@@ -68,8 +63,8 @@ export class DefaultDialer {
|
|
|
68
63
|
* The dial to the first address that is successfully able to upgrade a connection
|
|
69
64
|
* will be used.
|
|
70
65
|
*/
|
|
71
|
-
async dial(
|
|
72
|
-
const { id, multiaddrs } = getPeer(
|
|
66
|
+
async dial(peerIdOrMultiaddr, options = {}) {
|
|
67
|
+
const { id, multiaddrs } = getPeer(peerIdOrMultiaddr);
|
|
73
68
|
if (this.components.peerId.equals(id)) {
|
|
74
69
|
throw errCode(new Error('Tried to dial self'), codes.ERR_DIALED_SELF);
|
|
75
70
|
}
|
|
@@ -82,11 +77,31 @@ export class DefaultDialer {
|
|
|
82
77
|
throw errCode(new Error('The dial request is blocked by gater.allowDialPeer'), codes.ERR_PEER_DIAL_INTERCEPTED);
|
|
83
78
|
}
|
|
84
79
|
log('creating dial target for %p', id);
|
|
85
|
-
|
|
80
|
+
// resolving multiaddrs can involve dns lookups so allow them to be aborted
|
|
81
|
+
const controller = new AbortController();
|
|
82
|
+
const controllerId = randomId();
|
|
83
|
+
this.pendingDialTargets.set(controllerId, controller);
|
|
84
|
+
let signal = controller.signal;
|
|
85
|
+
// merge with the passed signal, if any
|
|
86
|
+
if (options.signal != null) {
|
|
87
|
+
signal = anySignal([signal, options.signal]);
|
|
88
|
+
}
|
|
89
|
+
let dialTarget;
|
|
90
|
+
try {
|
|
91
|
+
dialTarget = await this._createDialTarget(peerIdOrMultiaddr, {
|
|
92
|
+
...options,
|
|
93
|
+
signal
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
// done resolving the multiaddrs so remove the abort controller
|
|
98
|
+
this.pendingDialTargets.delete(controllerId);
|
|
99
|
+
}
|
|
86
100
|
if (dialTarget.addrs.length === 0) {
|
|
87
101
|
throw errCode(new Error('The dial request has no valid addresses'), codes.ERR_NO_VALID_ADDRESSES);
|
|
88
102
|
}
|
|
89
|
-
|
|
103
|
+
// try to join an in-flight dial for this peer if one is available
|
|
104
|
+
const pendingDial = this.pendingDials.get(dialTarget.id.toString()) ?? this._createPendingDial(dialTarget, options);
|
|
90
105
|
try {
|
|
91
106
|
const connection = await pendingDial.promise;
|
|
92
107
|
log('dial succeeded to %s', dialTarget.id);
|
|
@@ -105,61 +120,59 @@ export class DefaultDialer {
|
|
|
105
120
|
pendingDial.destroy();
|
|
106
121
|
}
|
|
107
122
|
}
|
|
108
|
-
/**
|
|
109
|
-
* Connects to a given `peer` by dialing all of its known addresses.
|
|
110
|
-
* The dial to the first address that is successfully able to upgrade a connection
|
|
111
|
-
* will be used.
|
|
112
|
-
*/
|
|
113
|
-
async _createCancellableDialTarget(peer, options) {
|
|
114
|
-
// Make dial target promise cancellable
|
|
115
|
-
const id = `${(parseInt(String(Math.random() * 1e9), 10)).toString()}${Date.now()}`;
|
|
116
|
-
const cancellablePromise = new Promise((resolve, reject) => {
|
|
117
|
-
this.pendingDialTargets.set(id, { resolve, reject });
|
|
118
|
-
});
|
|
119
|
-
try {
|
|
120
|
-
const dialTarget = await Promise.race([
|
|
121
|
-
this._createDialTarget(peer, options),
|
|
122
|
-
cancellablePromise
|
|
123
|
-
]);
|
|
124
|
-
return dialTarget;
|
|
125
|
-
}
|
|
126
|
-
finally {
|
|
127
|
-
this.pendingDialTargets.delete(id);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
123
|
/**
|
|
131
124
|
* Creates a DialTarget. The DialTarget is used to create and track
|
|
132
125
|
* the DialRequest to a given peer.
|
|
133
|
-
*
|
|
126
|
+
*
|
|
127
|
+
* If a multiaddr is received it should be the only address attempted.
|
|
128
|
+
*
|
|
134
129
|
* Multiaddrs not supported by the available transports will be filtered out.
|
|
135
130
|
*/
|
|
136
|
-
async _createDialTarget(
|
|
131
|
+
async _createDialTarget(peerIdOrMultiaddr, options) {
|
|
137
132
|
const _resolve = this._resolve.bind(this);
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
// Multiaddrs not supported by the available transports will be filtered out.
|
|
148
|
-
(source) => filter(source, (ma) => Boolean(this.components.transportManager.transportForMultiaddr(ma))), (source) => map(source, (ma) => {
|
|
149
|
-
if (peer.toString() === ma.getPeerId()) {
|
|
150
|
-
return ma;
|
|
151
|
-
}
|
|
152
|
-
return ma.encapsulate(`/p2p/${peer.toString()}`);
|
|
153
|
-
}), async (source) => await all(source));
|
|
133
|
+
let addrs = isMultiaddr(peerIdOrMultiaddr) ? [peerIdOrMultiaddr] : await this._loadAddresses(peerIdOrMultiaddr);
|
|
134
|
+
addrs = (await Promise.all(addrs.map(async (ma) => await _resolve(ma, options))))
|
|
135
|
+
.flat()
|
|
136
|
+
// Multiaddrs not supported by the available transports will be filtered out.
|
|
137
|
+
.filter(ma => Boolean(this.components.transportManager.transportForMultiaddr(ma)));
|
|
138
|
+
// deduplicate addresses
|
|
139
|
+
addrs = [...new Set(addrs)];
|
|
154
140
|
if (addrs.length > this.maxAddrsToDial) {
|
|
155
|
-
await this.components.peerStore.delete(peer);
|
|
156
141
|
throw errCode(new Error('dial with more addresses than allowed'), codes.ERR_TOO_MANY_ADDRESSES);
|
|
157
142
|
}
|
|
143
|
+
const peerId = isPeerId(peerIdOrMultiaddr) ? peerIdOrMultiaddr : undefined;
|
|
144
|
+
if (peerId != null) {
|
|
145
|
+
const peerIdMultiaddr = `/p2p/${peerId.toString()}`;
|
|
146
|
+
addrs = addrs.map(addr => {
|
|
147
|
+
const addressPeerId = addr.getPeerId();
|
|
148
|
+
if (addressPeerId == null || !peerId.equals(addressPeerId)) {
|
|
149
|
+
return addr.encapsulate(peerIdMultiaddr);
|
|
150
|
+
}
|
|
151
|
+
return addr;
|
|
152
|
+
});
|
|
153
|
+
}
|
|
158
154
|
return {
|
|
159
|
-
id:
|
|
155
|
+
id: peerId == null ? randomId() : peerId.toString(),
|
|
160
156
|
addrs
|
|
161
157
|
};
|
|
162
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Loads a list of addresses from the peer store for the passed peer id
|
|
161
|
+
*/
|
|
162
|
+
async _loadAddresses(peer) {
|
|
163
|
+
const addresses = await this.components.peerStore.addressBook.get(peer);
|
|
164
|
+
return (await Promise.all(addresses.map(async (address) => {
|
|
165
|
+
const deny = await this.components.connectionGater.denyDialMultiaddr(peer, address.multiaddr);
|
|
166
|
+
if (deny) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
return address;
|
|
170
|
+
})))
|
|
171
|
+
.filter(isTruthy)
|
|
172
|
+
// Sort addresses so, for example, we try certified public address first
|
|
173
|
+
.sort(this.addressSorter)
|
|
174
|
+
.map(address => address.multiaddr);
|
|
175
|
+
}
|
|
163
176
|
/**
|
|
164
177
|
* Creates a PendingDial that wraps the underlying DialRequest
|
|
165
178
|
*/
|
|
@@ -258,4 +271,16 @@ export class DefaultDialer {
|
|
|
258
271
|
}
|
|
259
272
|
}
|
|
260
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Type safe version of `list.filter(Boolean)`
|
|
276
|
+
*/
|
|
277
|
+
function isTruthy(e) {
|
|
278
|
+
return Boolean(e);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Returns a random string
|
|
282
|
+
*/
|
|
283
|
+
function randomId() {
|
|
284
|
+
return `${(parseInt(String(Math.random() * 1e9), 10)).toString()}${Date.now()}`;
|
|
285
|
+
}
|
|
261
286
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { PeerId } from '@libp2p/interface-peer-id';
|
|
|
6
6
|
import type { Connection, MultiaddrConnection } from '@libp2p/interface-connection';
|
|
7
7
|
import type { ConnectionManager, Dialer } from '@libp2p/interface-connection-manager';
|
|
8
8
|
import type { AddressSorter, PeerStore } from '@libp2p/interface-peer-store';
|
|
9
|
-
import { Resolver } from '@multiformats/multiaddr';
|
|
9
|
+
import { Multiaddr, Resolver } from '@multiformats/multiaddr';
|
|
10
10
|
import type { Metrics } from '@libp2p/interface-metrics';
|
|
11
11
|
import type { Upgrader } from '@libp2p/interface-transport';
|
|
12
12
|
export interface ConnectionManagerInit {
|
|
@@ -161,7 +161,7 @@ export declare class DefaultConnectionManager extends EventEmitter<ConnectionMan
|
|
|
161
161
|
*/
|
|
162
162
|
onDisconnect(evt: CustomEvent<Connection>): void;
|
|
163
163
|
getConnections(peerId?: PeerId): Connection[];
|
|
164
|
-
openConnection(
|
|
164
|
+
openConnection(peerIdOrMultiaddr: PeerId | Multiaddr, options?: AbortOptions): Promise<Connection>;
|
|
165
165
|
closeConnections(peerId: PeerId): Promise<void>;
|
|
166
166
|
/**
|
|
167
167
|
* Get all open connections with a peer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAY,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAA;AAErF,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,12 @@ import { codes } from '../errors.js';
|
|
|
7
7
|
import { isPeerId } from '@libp2p/interface-peer-id';
|
|
8
8
|
import { setMaxListeners } from 'events';
|
|
9
9
|
import * as STATUS from '@libp2p/interface-connection/status';
|
|
10
|
-
import { multiaddr } from '@multiformats/multiaddr';
|
|
10
|
+
import { isMultiaddr, multiaddr } from '@multiformats/multiaddr';
|
|
11
11
|
import { PeerMap } from '@libp2p/peer-collections';
|
|
12
12
|
import { TimeoutController } from 'timeout-abort-controller';
|
|
13
13
|
import { KEEP_ALIVE } from '@libp2p/interface-peer-store/tags';
|
|
14
14
|
import { RateLimiterMemory } from 'rate-limiter-flexible';
|
|
15
|
+
import { getPeer } from '../get-peer.js';
|
|
15
16
|
const log = logger('libp2p:connection-manager');
|
|
16
17
|
const defaultOptions = {
|
|
17
18
|
maxConnections: Infinity,
|
|
@@ -280,7 +281,18 @@ export class DefaultConnectionManager extends EventEmitter {
|
|
|
280
281
|
}
|
|
281
282
|
return conns;
|
|
282
283
|
}
|
|
283
|
-
async openConnection(
|
|
284
|
+
async openConnection(peerIdOrMultiaddr, options = {}) {
|
|
285
|
+
let peerId;
|
|
286
|
+
if (isPeerId(peerIdOrMultiaddr)) {
|
|
287
|
+
peerId = peerIdOrMultiaddr;
|
|
288
|
+
}
|
|
289
|
+
else if (isMultiaddr(peerIdOrMultiaddr)) {
|
|
290
|
+
const info = getPeer(peerIdOrMultiaddr);
|
|
291
|
+
peerId = info.id;
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
throw errCode(new TypeError('Can only open connections to PeerIds or Multiaddrs'), codes.ERR_INVALID_PARAMETERS);
|
|
295
|
+
}
|
|
284
296
|
log('dial to %p', peerId);
|
|
285
297
|
const existingConnections = this.getConnections(peerId);
|
|
286
298
|
if (existingConnections.length > 0) {
|
|
@@ -298,7 +310,7 @@ export class DefaultConnectionManager extends EventEmitter {
|
|
|
298
310
|
catch { }
|
|
299
311
|
}
|
|
300
312
|
try {
|
|
301
|
-
const connection = await this.components.dialer.dial(
|
|
313
|
+
const connection = await this.components.dialer.dial(peerIdOrMultiaddr, options);
|
|
302
314
|
let peerConnections = this.connections.get(peerId.toString());
|
|
303
315
|
if (peerConnections == null) {
|
|
304
316
|
peerConnections = [];
|