@libp2p/kad-dht 0.28.6 → 1.0.1
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/content-fetching/index.d.ts +6 -9
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +14 -11
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts +6 -9
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +15 -13
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/dual-kad-dht.d.ts +6 -6
- package/dist/src/dual-kad-dht.d.ts.map +1 -1
- package/dist/src/dual-kad-dht.js +9 -20
- package/dist/src/dual-kad-dht.js.map +1 -1
- package/dist/src/index.d.ts +14 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +14 -12
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts +12 -52
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +35 -46
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/network.d.ts +7 -7
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +10 -6
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts +7 -9
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +18 -16
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +6 -6
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +11 -7
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/manager.d.ts +6 -8
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +10 -7
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query/query-path.d.ts.map +1 -1
- package/dist/src/query/query-path.js +2 -3
- package/dist/src/query/query-path.js.map +1 -1
- package/dist/src/query-self.d.ts +6 -6
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +8 -4
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/routing-table/index.d.ts +10 -14
- package/dist/src/routing-table/index.d.ts.map +1 -1
- package/dist/src/routing-table/index.js +12 -10
- package/dist/src/routing-table/index.js.map +1 -1
- package/dist/src/routing-table/refresh.d.ts +5 -3
- package/dist/src/routing-table/refresh.d.ts.map +1 -1
- package/dist/src/routing-table/refresh.js +4 -2
- package/dist/src/routing-table/refresh.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +5 -3
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/add-provider.js +4 -2
- package/dist/src/rpc/handlers/add-provider.js.map +1 -1
- package/dist/src/rpc/handlers/find-node.d.ts +5 -3
- package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
- package/dist/src/rpc/handlers/find-node.js +4 -2
- package/dist/src/rpc/handlers/find-node.js.map +1 -1
- package/dist/src/rpc/handlers/get-providers.d.ts +7 -7
- package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +8 -4
- package/dist/src/rpc/handlers/get-providers.js.map +1 -1
- package/dist/src/rpc/handlers/get-value.d.ts +6 -9
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-value.js +10 -7
- package/dist/src/rpc/handlers/get-value.js.map +1 -1
- package/dist/src/rpc/handlers/ping.d.ts +3 -1
- package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
- package/dist/src/rpc/handlers/ping.js +2 -0
- package/dist/src/rpc/handlers/ping.js.map +1 -1
- package/dist/src/rpc/handlers/put-value.d.ts +7 -8
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/put-value.js +10 -7
- package/dist/src/rpc/handlers/put-value.js.map +1 -1
- package/dist/src/rpc/index.d.ts +6 -10
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +14 -9
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/topology-listener.d.ts +6 -6
- package/dist/src/topology-listener.d.ts.map +1 -1
- package/dist/src/topology-listener.js +11 -7
- package/dist/src/topology-listener.js.map +1 -1
- package/package.json +22 -22
- package/src/content-fetching/index.ts +17 -19
- package/src/content-routing/index.ts +18 -21
- package/src/dual-kad-dht.ts +12 -30
- package/src/index.ts +22 -14
- package/src/kad-dht.ts +49 -115
- package/src/network.ts +14 -12
- package/src/peer-routing/index.ts +21 -23
- package/src/providers.ts +14 -11
- package/src/query/manager.ts +13 -14
- package/src/query/query-path.ts +2 -3
- package/src/query-self.ts +11 -9
- package/src/routing-table/index.ts +20 -23
- package/src/routing-table/refresh.ts +9 -4
- package/src/rpc/handlers/add-provider.ts +9 -4
- package/src/rpc/handlers/find-node.ts +9 -4
- package/src/rpc/handlers/get-providers.ts +11 -9
- package/src/rpc/handlers/get-value.ts +13 -15
- package/src/rpc/handlers/ping.ts +6 -1
- package/src/rpc/handlers/put-value.ts +14 -15
- package/src/rpc/index.ts +19 -18
- package/src/topology-listener.ts +14 -12
- package/dist/src/routing-table/types.d.ts +0 -24
- package/dist/src/routing-table/types.d.ts.map +0 -1
- package/dist/src/rpc/handlers/index.d.ts +0 -13
- package/dist/src/rpc/handlers/index.d.ts.map +0 -1
- package/dist/src/rpc/types.d.ts +0 -6
- package/dist/src/rpc/types.d.ts.map +0 -1
- package/dist/src/types.d.ts +0 -143
- package/dist/src/types.d.ts.map +0 -1
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { Libp2pRecord } from '@libp2p/record';
|
|
2
|
-
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
3
2
|
import type { Validators, Selectors, ValueEvent, QueryOptions } from '@libp2p/interfaces/dht';
|
|
4
|
-
import type { Datastore } from 'interface-datastore';
|
|
5
3
|
import type { PeerRouting } from '../peer-routing/index.js';
|
|
6
4
|
import type { QueryManager } from '../query/manager.js';
|
|
7
5
|
import type { RoutingTable } from '../routing-table/index.js';
|
|
8
6
|
import type { Network } from '../network.js';
|
|
9
7
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
datastore: Datastore;
|
|
8
|
+
import { Components, Initializable } from '@libp2p/interfaces/components';
|
|
9
|
+
export interface ContentFetchingInit {
|
|
13
10
|
validators: Validators;
|
|
14
11
|
selectors: Selectors;
|
|
15
12
|
peerRouting: PeerRouting;
|
|
@@ -18,17 +15,17 @@ export interface ContentFetchingOptions {
|
|
|
18
15
|
network: Network;
|
|
19
16
|
lan: boolean;
|
|
20
17
|
}
|
|
21
|
-
export declare class ContentFetching {
|
|
18
|
+
export declare class ContentFetching implements Initializable {
|
|
22
19
|
private readonly log;
|
|
23
|
-
private
|
|
24
|
-
private readonly datastore;
|
|
20
|
+
private components;
|
|
25
21
|
private readonly validators;
|
|
26
22
|
private readonly selectors;
|
|
27
23
|
private readonly peerRouting;
|
|
28
24
|
private readonly queryManager;
|
|
29
25
|
private readonly routingTable;
|
|
30
26
|
private readonly network;
|
|
31
|
-
constructor(
|
|
27
|
+
constructor(init: ContentFetchingInit);
|
|
28
|
+
init(components: Components): void;
|
|
32
29
|
putLocal(key: Uint8Array, rec: Uint8Array): Promise<void>;
|
|
33
30
|
/**
|
|
34
31
|
* Attempt to retrieve the value for the given key from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAgB7C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAgB7C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb;AAED,qBAAa,eAAgB,YAAW,aAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAEpB,IAAI,EAAE,mBAAmB;IAWtC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAI7B,QAAQ,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU;IAKhD;;;OAGG;IACG,QAAQ,CAAE,GAAG,EAAE,UAAU;IAiB/B;;OAEG;IACK,oBAAoB,CAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB;IA6C/G;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB;IAoD3E;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB;IAyCxD;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB;CAkC7D"}
|
|
@@ -11,12 +11,12 @@ import { pipe } from 'it-pipe';
|
|
|
11
11
|
import { ALPHA } from '../constants.js';
|
|
12
12
|
import { createPutRecord, convertBuffer, bufferToRecordKey } from '../utils.js';
|
|
13
13
|
import { logger } from '@libp2p/logger';
|
|
14
|
+
import { Components } from '@libp2p/interfaces/components';
|
|
14
15
|
export class ContentFetching {
|
|
15
|
-
constructor(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
-
this.datastore = datastore;
|
|
16
|
+
constructor(init) {
|
|
17
|
+
this.components = new Components();
|
|
18
|
+
const { validators, selectors, peerRouting, queryManager, routingTable, network, lan } = init;
|
|
19
|
+
this.log = logger(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:content-fetching`);
|
|
20
20
|
this.validators = validators;
|
|
21
21
|
this.selectors = selectors;
|
|
22
22
|
this.peerRouting = peerRouting;
|
|
@@ -24,9 +24,12 @@ export class ContentFetching {
|
|
|
24
24
|
this.routingTable = routingTable;
|
|
25
25
|
this.network = network;
|
|
26
26
|
}
|
|
27
|
+
init(components) {
|
|
28
|
+
this.components = components;
|
|
29
|
+
}
|
|
27
30
|
async putLocal(key, rec) {
|
|
28
31
|
const dsKey = bufferToRecordKey(key);
|
|
29
|
-
await this.
|
|
32
|
+
await this.components.getDatastore().put(dsKey, rec);
|
|
30
33
|
}
|
|
31
34
|
/**
|
|
32
35
|
* Attempt to retrieve the value for the given key from
|
|
@@ -36,7 +39,7 @@ export class ContentFetching {
|
|
|
36
39
|
this.log('getLocal %b', key);
|
|
37
40
|
const dsKey = bufferToRecordKey(key);
|
|
38
41
|
this.log('fetching record for key %k', dsKey);
|
|
39
|
-
const raw = await this.
|
|
42
|
+
const raw = await this.components.getDatastore().get(dsKey);
|
|
40
43
|
this.log('found %k in local datastore', dsKey);
|
|
41
44
|
const rec = Libp2pRecord.deserialize(raw);
|
|
42
45
|
await verifyRecord(this.validators, rec);
|
|
@@ -55,11 +58,11 @@ export class ContentFetching {
|
|
|
55
58
|
continue;
|
|
56
59
|
}
|
|
57
60
|
// correct ourself
|
|
58
|
-
if (this.
|
|
61
|
+
if (this.components.getPeerId().equals(from)) {
|
|
59
62
|
try {
|
|
60
63
|
const dsKey = bufferToRecordKey(key);
|
|
61
64
|
this.log(`Storing corrected record for key ${dsKey.toString()}`);
|
|
62
|
-
await this.
|
|
65
|
+
await this.components.getDatastore().put(dsKey, fixupRec);
|
|
63
66
|
}
|
|
64
67
|
catch (err) {
|
|
65
68
|
this.log.error('Failed error correcting self', err);
|
|
@@ -92,7 +95,7 @@ export class ContentFetching {
|
|
|
92
95
|
// store the record locally
|
|
93
96
|
const dsKey = bufferToRecordKey(key);
|
|
94
97
|
this.log(`storing record for key ${dsKey.toString()}`);
|
|
95
|
-
await this.
|
|
98
|
+
await this.components.getDatastore().put(dsKey, record);
|
|
96
99
|
// put record to the closest peers
|
|
97
100
|
yield* pipe(this.peerRouting.getClosestPeers(key, { signal: options.signal }), (source) => map(source, (event) => {
|
|
98
101
|
return async () => {
|
|
@@ -165,7 +168,7 @@ export class ContentFetching {
|
|
|
165
168
|
const localRec = await this.getLocal(key);
|
|
166
169
|
yield valueEvent({
|
|
167
170
|
value: localRec.value,
|
|
168
|
-
from: this.
|
|
171
|
+
from: this.components.getPeerId()
|
|
169
172
|
});
|
|
170
173
|
}
|
|
171
174
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,QAAQ,MAAM,aAAa,CAAA;AAClC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EACL,UAAU,EACV,eAAe,EAChB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EACL,KAAK,EACN,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,31 @@
|
|
|
1
|
-
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
2
1
|
import type { QueryEvent, QueryOptions } from '@libp2p/interfaces/dht';
|
|
3
2
|
import type { PeerRouting } from '../peer-routing/index.js';
|
|
4
3
|
import type { QueryManager } from '../query/manager.js';
|
|
5
4
|
import type { RoutingTable } from '../routing-table/index.js';
|
|
6
5
|
import type { Network } from '../network.js';
|
|
7
6
|
import type { Providers } from '../providers.js';
|
|
8
|
-
import type { PeerStore } from '@libp2p/interfaces/peer-store';
|
|
9
7
|
import type { CID } from 'multiformats/cid';
|
|
10
8
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
11
9
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
import { Components, Initializable } from '@libp2p/interfaces/components';
|
|
11
|
+
export interface ContentRoutingInit {
|
|
14
12
|
network: Network;
|
|
15
13
|
peerRouting: PeerRouting;
|
|
16
14
|
queryManager: QueryManager;
|
|
17
15
|
routingTable: RoutingTable;
|
|
18
16
|
providers: Providers;
|
|
19
|
-
peerStore: PeerStore;
|
|
20
17
|
lan: boolean;
|
|
21
18
|
}
|
|
22
|
-
export declare class ContentRouting {
|
|
19
|
+
export declare class ContentRouting implements Initializable {
|
|
23
20
|
private readonly log;
|
|
24
|
-
private
|
|
21
|
+
private components;
|
|
25
22
|
private readonly network;
|
|
26
23
|
private readonly peerRouting;
|
|
27
24
|
private readonly queryManager;
|
|
28
25
|
private readonly routingTable;
|
|
29
26
|
private readonly providers;
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
constructor(init: ContentRoutingInit);
|
|
28
|
+
init(components: Components): void;
|
|
32
29
|
/**
|
|
33
30
|
* Announce to the network that we can provide the value for a given key and
|
|
34
31
|
* are contactable on the given multiaddrs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,OAAO,CAAA;CACb;AAED,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;gBAExB,IAAI,EAAE,kBAAkB;IAWrC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAInC;;;OAGG;IACK,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,YAAiB;IA+D9E;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY;CAqEvD"}
|
|
@@ -6,18 +6,20 @@ import { ALPHA } from '../constants.js';
|
|
|
6
6
|
import { pipe } from 'it-pipe';
|
|
7
7
|
import { queryErrorEvent, peerResponseEvent, providerEvent } from '../query/events.js';
|
|
8
8
|
import { logger } from '@libp2p/logger';
|
|
9
|
-
import {
|
|
9
|
+
import { Components } from '@libp2p/interfaces/components';
|
|
10
10
|
export class ContentRouting {
|
|
11
|
-
constructor(
|
|
12
|
-
|
|
11
|
+
constructor(init) {
|
|
12
|
+
this.components = new Components();
|
|
13
|
+
const { network, peerRouting, queryManager, routingTable, providers, lan } = init;
|
|
13
14
|
this.log = logger(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:content-routing`);
|
|
14
|
-
this.peerId = peerId;
|
|
15
15
|
this.network = network;
|
|
16
16
|
this.peerRouting = peerRouting;
|
|
17
17
|
this.queryManager = queryManager;
|
|
18
18
|
this.routingTable = routingTable;
|
|
19
19
|
this.providers = providers;
|
|
20
|
-
|
|
20
|
+
}
|
|
21
|
+
init(components) {
|
|
22
|
+
this.components = components;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* Announce to the network that we can provide the value for a given key and
|
|
@@ -26,10 +28,10 @@ export class ContentRouting {
|
|
|
26
28
|
async *provide(key, multiaddrs, options = {}) {
|
|
27
29
|
this.log('provide %s', key);
|
|
28
30
|
// Add peer as provider
|
|
29
|
-
await this.providers.addProvider(key, this.
|
|
31
|
+
await this.providers.addProvider(key, this.components.getPeerId());
|
|
30
32
|
const msg = new Message(MESSAGE_TYPE.ADD_PROVIDER, key.bytes, 0);
|
|
31
33
|
msg.providerPeers = [{
|
|
32
|
-
id: this.
|
|
34
|
+
id: this.components.getPeerId(),
|
|
33
35
|
multiaddrs,
|
|
34
36
|
protocols: []
|
|
35
37
|
}];
|
|
@@ -85,12 +87,12 @@ export class ContentRouting {
|
|
|
85
87
|
for (const peerId of provs.slice(0, toFind)) {
|
|
86
88
|
providers.push({
|
|
87
89
|
id: peerId,
|
|
88
|
-
multiaddrs: ((await this.
|
|
90
|
+
multiaddrs: ((await this.components.getPeerStore().addressBook.get(peerId)) ?? []).map(address => address.multiaddr),
|
|
89
91
|
protocols: []
|
|
90
92
|
});
|
|
91
93
|
}
|
|
92
|
-
yield peerResponseEvent({ from: this.
|
|
93
|
-
yield providerEvent({ from: this.
|
|
94
|
+
yield peerResponseEvent({ from: this.components.getPeerId(), messageType: MESSAGE_TYPE.GET_PROVIDERS, providers });
|
|
95
|
+
yield providerEvent({ from: this.components.getPeerId(), providers: providers });
|
|
94
96
|
}
|
|
95
97
|
// All done
|
|
96
98
|
if (provs.length >= toFind) {
|
|
@@ -103,17 +105,17 @@ export class ContentRouting {
|
|
|
103
105
|
const request = new Message(MESSAGE_TYPE.GET_PROVIDERS, target, 0);
|
|
104
106
|
yield* self.network.sendRequest(peer, request, { signal });
|
|
105
107
|
};
|
|
106
|
-
const providers = new Set(provs.map(p => p.toString(
|
|
108
|
+
const providers = new Set(provs.map(p => p.toString()));
|
|
107
109
|
for await (const event of this.queryManager.run(target, this.routingTable.closestPeers(id), findProvidersQuery, options)) {
|
|
108
110
|
yield event;
|
|
109
111
|
if (event.name === 'PEER_RESPONSE') {
|
|
110
112
|
this.log('Found %d provider entries for %c and %d closer peers', event.providers.length, key, event.closer.length);
|
|
111
113
|
const newProviders = [];
|
|
112
114
|
for (const peer of event.providers) {
|
|
113
|
-
if (providers.has(peer.id.toString(
|
|
115
|
+
if (providers.has(peer.id.toString())) {
|
|
114
116
|
continue;
|
|
115
117
|
}
|
|
116
|
-
providers.add(peer.id.toString(
|
|
118
|
+
providers.add(peer.id.toString());
|
|
117
119
|
newProviders.push(peer);
|
|
118
120
|
}
|
|
119
121
|
if (newProviders.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,QAAQ,MAAM,aAAa,CAAA;AAClC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,aAAa,EACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import type { KadDHT } from './kad-dht.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { DualDHT, QueryOptions } from '@libp2p/interfaces/dht';
|
|
3
3
|
import { AbortOptions, EventEmitter } from '@libp2p/interfaces';
|
|
4
4
|
import type { CID } from 'multiformats';
|
|
5
5
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
6
6
|
import type { PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery';
|
|
7
|
-
import
|
|
7
|
+
import { Components, Initializable } from '@libp2p/interfaces/components';
|
|
8
8
|
/**
|
|
9
9
|
* A DHT implementation modelled after Kademlia with S/Kademlia modifications.
|
|
10
10
|
* Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.
|
|
11
11
|
*/
|
|
12
|
-
export declare class DualKadDHT extends EventEmitter<PeerDiscoveryEvents> implements
|
|
12
|
+
export declare class DualKadDHT extends EventEmitter<PeerDiscoveryEvents> implements DualDHT, Initializable {
|
|
13
13
|
wan: KadDHT;
|
|
14
14
|
lan: KadDHT;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
components: Components;
|
|
16
|
+
constructor(wan: KadDHT, lan: KadDHT);
|
|
17
|
+
init(components: Components): void;
|
|
18
18
|
/**
|
|
19
19
|
* Is this DHT running.
|
|
20
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dual-kad-dht.d.ts","sourceRoot":"","sources":["../../src/dual-kad-dht.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"dual-kad-dht.d.ts","sourceRoot":"","sources":["../../src/dual-kad-dht.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC5E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAIzE;;;GAGG;AACH,qBAAa,UAAW,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,OAAO,EAAE,aAAa;IAC1F,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,UAAU,CAAmB;gBAEnC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAmBrC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAMnC;;OAEG;IACH,SAAS;IAIT;;OAEG;IACG,OAAO;IAIb;;OAEG;IACG,OAAO,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAIxC;;OAEG;IACG,KAAK;IAOX;;;OAGG;IACG,IAAI;IAOV;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB;IAS3E;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB;IAyCxD;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB;IAuCrD;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB;IAS3D;;OAEG;IACK,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB;IAmBxD;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB;IAO9D,mBAAmB;CAM1B"}
|
package/dist/src/dual-kad-dht.js
CHANGED
|
@@ -3,18 +3,18 @@ import errCode from 'err-code';
|
|
|
3
3
|
import merge from 'it-merge';
|
|
4
4
|
import { queryErrorEvent } from './query/events.js';
|
|
5
5
|
import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
|
|
6
|
+
import { Components } from '@libp2p/interfaces/components';
|
|
6
7
|
const log = logger('libp2p:kad-dht');
|
|
7
8
|
/**
|
|
8
9
|
* A DHT implementation modelled after Kademlia with S/Kademlia modifications.
|
|
9
10
|
* Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.
|
|
10
11
|
*/
|
|
11
12
|
export class DualKadDHT extends EventEmitter {
|
|
12
|
-
constructor(wan, lan
|
|
13
|
+
constructor(wan, lan) {
|
|
13
14
|
super();
|
|
15
|
+
this.components = new Components();
|
|
14
16
|
this.wan = wan;
|
|
15
17
|
this.lan = lan;
|
|
16
|
-
this.peerId = peerId;
|
|
17
|
-
this.peerStore = peerStore;
|
|
18
18
|
// handle peers being discovered during processing of DHT messages
|
|
19
19
|
this.wan.addEventListener('peer', (evt) => {
|
|
20
20
|
this.dispatchEvent(new CustomEvent('peer', {
|
|
@@ -27,6 +27,11 @@ export class DualKadDHT extends EventEmitter {
|
|
|
27
27
|
}));
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
+
init(components) {
|
|
31
|
+
this.components = components;
|
|
32
|
+
this.wan.init(components);
|
|
33
|
+
this.lan.init(components);
|
|
34
|
+
}
|
|
30
35
|
/**
|
|
31
36
|
* Is this DHT running.
|
|
32
37
|
*/
|
|
@@ -68,24 +73,8 @@ export class DualKadDHT extends EventEmitter {
|
|
|
68
73
|
* Store the given key/value pair in the DHT
|
|
69
74
|
*/
|
|
70
75
|
async *put(key, value, options = {}) {
|
|
71
|
-
let counterAll = 0;
|
|
72
|
-
let counterSuccess = 0;
|
|
73
76
|
for await (const event of merge(this.lan.put(key, value, options), this.wan.put(key, value, options))) {
|
|
74
77
|
yield event;
|
|
75
|
-
if (event.name === 'SENDING_QUERY' && event.messageName === 'PUT_VALUE') {
|
|
76
|
-
counterAll++;
|
|
77
|
-
}
|
|
78
|
-
if (event.name === 'PEER_RESPONSE' && event.messageName === 'PUT_VALUE') {
|
|
79
|
-
counterSuccess++;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
// Ensure we have a default `minPeers`
|
|
83
|
-
const minPeers = options.minPeers == null ? counterAll ?? 1 : options.minPeers;
|
|
84
|
-
// verify if we were able to put to enough peers
|
|
85
|
-
if (counterSuccess < minPeers) {
|
|
86
|
-
const error = errCode(new Error(`Failed to put value to enough peers: ${counterSuccess}/${minPeers}`), 'ERR_NOT_ENOUGH_PUT_PEERS');
|
|
87
|
-
log.error(error);
|
|
88
|
-
throw error;
|
|
89
78
|
}
|
|
90
79
|
}
|
|
91
80
|
/**
|
|
@@ -114,7 +103,7 @@ export class DualKadDHT extends EventEmitter {
|
|
|
114
103
|
}
|
|
115
104
|
if (!foundValue) {
|
|
116
105
|
yield queryErrorEvent({
|
|
117
|
-
from: this.
|
|
106
|
+
from: this.components.getPeerId(),
|
|
118
107
|
error: errCode(new Error('Not found'), 'ERR_NOT_FOUND')
|
|
119
108
|
});
|
|
120
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dual-kad-dht.js","sourceRoot":"","sources":["../../src/dual-kad-dht.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,OAAO,EAAgB,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"dual-kad-dht.js","sourceRoot":"","sources":["../../src/dual-kad-dht.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
export
|
|
1
|
+
import { DualKadDHT } from './dual-kad-dht.js';
|
|
2
|
+
import type { Selectors, Validators } from '@libp2p/interfaces/dht';
|
|
3
|
+
export interface KadDHTInit {
|
|
4
|
+
kBucketSize?: number;
|
|
5
|
+
clientMode?: boolean;
|
|
6
|
+
selectors?: Selectors;
|
|
7
|
+
validators?: Validators;
|
|
8
|
+
querySelfInterval?: number;
|
|
9
|
+
lan?: boolean;
|
|
10
|
+
protocolPrefix?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class KadDHT extends DualKadDHT {
|
|
13
|
+
constructor(init?: KadDHTInit);
|
|
14
|
+
}
|
|
4
15
|
//# sourceMappingURL=index.d.ts.map
|
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":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnE,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,MAAO,SAAQ,UAAU;gBACvB,IAAI,CAAC,EAAE,UAAU;CAa/B"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { KadDHT } from './kad-dht.js';
|
|
1
|
+
import { KadDHT as SingleKadDHT } from './kad-dht.js';
|
|
2
2
|
import { DualKadDHT } from './dual-kad-dht.js';
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
export class KadDHT extends DualKadDHT {
|
|
4
|
+
constructor(init) {
|
|
5
|
+
super(new SingleKadDHT({
|
|
6
|
+
protocolPrefix: '/ipfs',
|
|
7
|
+
...init,
|
|
8
|
+
lan: false
|
|
9
|
+
}), new SingleKadDHT({
|
|
10
|
+
protocolPrefix: '/ipfs',
|
|
11
|
+
...init,
|
|
12
|
+
clientMode: false,
|
|
13
|
+
lan: true
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAa9C,MAAM,OAAO,MAAO,SAAQ,UAAU;IACpC,YAAa,IAAiB;QAC5B,KAAK,CAAC,IAAI,YAAY,CAAC;YACrB,cAAc,EAAE,OAAO;YACvB,GAAG,IAAI;YACP,GAAG,EAAE,KAAK;SACX,CAAC,EACF,IAAI,YAAY,CAAC;YACf,cAAc,EAAE,OAAO;YACvB,GAAG,IAAI;YACP,UAAU,EAAE,KAAK;YACjB,GAAG,EAAE,IAAI;SACV,CAAC,CAAC,CAAA;IACL,CAAC;CACF"}
|
package/dist/src/kad-dht.d.ts
CHANGED
|
@@ -2,84 +2,44 @@ import { RoutingTable } from './routing-table/index.js';
|
|
|
2
2
|
import { Network } from './network.js';
|
|
3
3
|
import { PeerRouting } from './peer-routing/index.js';
|
|
4
4
|
import { Providers } from './providers.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { QueryOptions, DHT } from '@libp2p/interfaces/dht';
|
|
6
6
|
import type { PeerData } from '@libp2p/interfaces/peer-data';
|
|
7
7
|
import { EventEmitter } from '@libp2p/interfaces';
|
|
8
|
-
import type { Addressable, Dialer } from '@libp2p/interfaces';
|
|
9
8
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
10
|
-
import type { PeerStore } from '@libp2p/interfaces/peer-store';
|
|
11
|
-
import type { ComponentMetricsTracker } from '@libp2p/interfaces/metrics';
|
|
12
|
-
import type { Datastore } from 'interface-datastore';
|
|
13
|
-
import type { Registrar } from '@libp2p/interfaces/registrar';
|
|
14
9
|
import type { CID } from 'multiformats/cid';
|
|
15
10
|
import type { PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* libp2p registrar handle protocol
|
|
19
|
-
*/
|
|
20
|
-
protocol: string;
|
|
21
|
-
/**
|
|
22
|
-
* k-bucket size (default 20)
|
|
23
|
-
*/
|
|
24
|
-
kBucketSize?: number;
|
|
25
|
-
/**
|
|
26
|
-
* If true, the DHT will not respond to queries. This should be true if your node will not be dialable. (default: false)
|
|
27
|
-
*/
|
|
28
|
-
clientMode?: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* validators object with namespace as keys and function(key, record, callback)
|
|
31
|
-
*/
|
|
32
|
-
validators: Validators;
|
|
33
|
-
/**
|
|
34
|
-
* selectors object with namespace as keys and function(key, records)
|
|
35
|
-
*/
|
|
36
|
-
selectors: Selectors;
|
|
37
|
-
/**
|
|
38
|
-
* how often to search the network for peers close to ourselves
|
|
39
|
-
*/
|
|
40
|
-
querySelfInterval: number;
|
|
41
|
-
lan: boolean;
|
|
42
|
-
bootstrapPeers: PeerData[];
|
|
43
|
-
dialer: Dialer;
|
|
44
|
-
addressable: Addressable;
|
|
45
|
-
peerStore: PeerStore;
|
|
46
|
-
peerId: PeerId;
|
|
47
|
-
datastore: Datastore;
|
|
48
|
-
registrar: Registrar;
|
|
49
|
-
metrics?: ComponentMetricsTracker;
|
|
50
|
-
}
|
|
11
|
+
import { Components, Initializable } from '@libp2p/interfaces/components';
|
|
12
|
+
import type { KadDHTInit } from './index.js';
|
|
51
13
|
/**
|
|
52
14
|
* A DHT implementation modelled after Kademlia with S/Kademlia modifications.
|
|
53
15
|
* Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.
|
|
54
16
|
*/
|
|
55
|
-
export declare class KadDHT extends EventEmitter<PeerDiscoveryEvents> implements DHT {
|
|
17
|
+
export declare class KadDHT extends EventEmitter<PeerDiscoveryEvents> implements DHT, Initializable {
|
|
18
|
+
protocol: string;
|
|
19
|
+
routingTable: RoutingTable;
|
|
20
|
+
providers: Providers;
|
|
21
|
+
network: Network;
|
|
22
|
+
peerRouting: PeerRouting;
|
|
23
|
+
components: Components;
|
|
56
24
|
private readonly log;
|
|
57
25
|
private running;
|
|
58
|
-
protocol: string;
|
|
59
26
|
private readonly kBucketSize;
|
|
60
27
|
private clientMode;
|
|
61
|
-
private readonly bootstrapPeers;
|
|
62
|
-
routingTable: RoutingTable;
|
|
63
|
-
providers: Providers;
|
|
64
28
|
private readonly lan;
|
|
65
29
|
private readonly validators;
|
|
66
30
|
private readonly selectors;
|
|
67
|
-
network: Network;
|
|
68
31
|
private readonly queryManager;
|
|
69
|
-
peerRouting: PeerRouting;
|
|
70
32
|
private readonly contentFetching;
|
|
71
33
|
private readonly contentRouting;
|
|
72
34
|
private readonly routingTableRefresh;
|
|
73
35
|
private readonly rpc;
|
|
74
36
|
private readonly topologyListener;
|
|
75
37
|
private readonly querySelf;
|
|
76
|
-
addressable: Addressable;
|
|
77
|
-
registrar: Registrar;
|
|
78
|
-
private registrarHandleId?;
|
|
79
38
|
/**
|
|
80
39
|
* Create a new KadDHT
|
|
81
40
|
*/
|
|
82
|
-
constructor(
|
|
41
|
+
constructor(init: KadDHTInit);
|
|
42
|
+
init(components: Components): void;
|
|
83
43
|
onPeerConnect(peerData: PeerData): Promise<void>;
|
|
84
44
|
/**
|
|
85
45
|
* Is this DHT running.
|