@libp2p/kad-dht 0.28.7 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/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 -4
- 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 +45 -48
- 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 +6 -8
- 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 +6 -6
- 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 +9 -5
- package/dist/src/topology-listener.js.map +1 -1
- package/package.json +21 -21
- package/src/content-fetching/index.ts +17 -19
- package/src/content-routing/index.ts +18 -21
- package/src/dual-kad-dht.ts +12 -9
- package/src/index.ts +22 -14
- package/src/kad-dht.ts +59 -117
- 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 +12 -10
- 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
package/dist/src/providers.js
CHANGED
|
@@ -6,6 +6,7 @@ import { PROVIDERS_CLEANUP_INTERVAL, PROVIDERS_VALIDITY, PROVIDERS_LRU_CACHE_SIZ
|
|
|
6
6
|
import { logger } from '@libp2p/logger';
|
|
7
7
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
8
8
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
9
|
+
import { Components } from '@libp2p/interfaces/components';
|
|
9
10
|
const log = logger('libp2p:kad-dht:providers');
|
|
10
11
|
/**
|
|
11
12
|
* This class manages known providers.
|
|
@@ -20,15 +21,18 @@ const log = logger('libp2p:kad-dht:providers');
|
|
|
20
21
|
* access is fast there is an LRU cache in front of that.
|
|
21
22
|
*/
|
|
22
23
|
export class Providers {
|
|
23
|
-
constructor(
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
constructor(init = {}) {
|
|
25
|
+
this.components = new Components();
|
|
26
|
+
const { cacheSize, cleanupInterval, provideValidity } = init;
|
|
26
27
|
this.cleanupInterval = cleanupInterval ?? PROVIDERS_CLEANUP_INTERVAL;
|
|
27
28
|
this.provideValidity = provideValidity ?? PROVIDERS_VALIDITY;
|
|
28
29
|
this.cache = cache(cacheSize ?? PROVIDERS_LRU_CACHE_SIZE);
|
|
29
30
|
this.syncQueue = new Queue({ concurrency: 1 });
|
|
30
31
|
this.started = false;
|
|
31
32
|
}
|
|
33
|
+
init(components) {
|
|
34
|
+
this.components = components;
|
|
35
|
+
}
|
|
32
36
|
isStarted() {
|
|
33
37
|
return this.started;
|
|
34
38
|
}
|
|
@@ -65,9 +69,9 @@ export class Providers {
|
|
|
65
69
|
let count = 0;
|
|
66
70
|
let deleteCount = 0;
|
|
67
71
|
const deleted = new Map();
|
|
68
|
-
const batch = this.
|
|
72
|
+
const batch = this.components.getDatastore().batch();
|
|
69
73
|
// Get all provider entries from the datastore
|
|
70
|
-
const query = this.
|
|
74
|
+
const query = this.components.getDatastore().query({ prefix: PROVIDER_KEY_PREFIX });
|
|
71
75
|
for await (const entry of query) {
|
|
72
76
|
try {
|
|
73
77
|
// Add a delete to the batch for each expired entry
|
|
@@ -124,7 +128,7 @@ export class Providers {
|
|
|
124
128
|
const cacheKey = makeProviderKey(cid);
|
|
125
129
|
let provs = this.cache.get(cacheKey);
|
|
126
130
|
if (provs == null) {
|
|
127
|
-
provs = await loadProviders(this.
|
|
131
|
+
provs = await loadProviders(this.components.getDatastore(), cid);
|
|
128
132
|
this.cache.set(cacheKey, provs);
|
|
129
133
|
}
|
|
130
134
|
return provs;
|
|
@@ -141,7 +145,7 @@ export class Providers {
|
|
|
141
145
|
provs.set(provider.toString(), now);
|
|
142
146
|
const dsKey = makeProviderKey(cid);
|
|
143
147
|
this.cache.set(dsKey, provs);
|
|
144
|
-
await writeProviderEntry(this.
|
|
148
|
+
await writeProviderEntry(this.components.getDatastore(), cid, provider, now);
|
|
145
149
|
});
|
|
146
150
|
}
|
|
147
151
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,29 @@
|
|
|
1
1
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
2
|
-
import type { ComponentMetricsTracker } from '@libp2p/interfaces/metrics';
|
|
3
2
|
import type { Startable } from '@libp2p/interfaces';
|
|
4
3
|
import type { QueryFunc } from './types.js';
|
|
5
4
|
import type { QueryOptions } from '@libp2p/interfaces/dht';
|
|
5
|
+
import { Components, Initializable } from '@libp2p/interfaces/components';
|
|
6
6
|
export interface CleanUpEvents {
|
|
7
7
|
'cleanup': CustomEvent;
|
|
8
8
|
}
|
|
9
|
-
export interface
|
|
10
|
-
peerId: PeerId;
|
|
9
|
+
export interface QueryManagerInit {
|
|
11
10
|
lan?: boolean;
|
|
12
|
-
metrics?: ComponentMetricsTracker;
|
|
13
11
|
disjointPaths?: number;
|
|
14
12
|
alpha?: number;
|
|
15
13
|
}
|
|
16
14
|
/**
|
|
17
15
|
* Keeps track of all running queries
|
|
18
16
|
*/
|
|
19
|
-
export declare class QueryManager implements Startable {
|
|
20
|
-
private
|
|
17
|
+
export declare class QueryManager implements Startable, Initializable {
|
|
18
|
+
private components;
|
|
21
19
|
private readonly lan;
|
|
22
|
-
private readonly metrics?;
|
|
23
20
|
disjointPaths: number;
|
|
24
21
|
private readonly alpha;
|
|
25
22
|
private readonly controllers;
|
|
26
23
|
private running;
|
|
27
24
|
private queries;
|
|
28
|
-
constructor(
|
|
25
|
+
constructor(init: QueryManagerInit);
|
|
26
|
+
init(components: Components): void;
|
|
29
27
|
isStarted(): boolean;
|
|
30
28
|
/**
|
|
31
29
|
* Starts the query manager
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAIzE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS,EAAE,aAAa;IAC3D,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IACtB,aAAa,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAQ;gBAEV,IAAI,EAAE,gBAAgB;IAUnC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAInC,SAAS;IAIT;;OAEG;IACG,KAAK;IAIX;;OAEG;IACG,IAAI;IAUF,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB;CAwGhG"}
|
|
@@ -9,22 +9,25 @@ import {
|
|
|
9
9
|
setMaxListeners } from 'events';
|
|
10
10
|
import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
|
|
11
11
|
import { logger } from '@libp2p/logger';
|
|
12
|
+
import { Components } from '@libp2p/interfaces/components';
|
|
12
13
|
const METRIC_RUNNING_QUERIES = 'running-queries';
|
|
13
14
|
/**
|
|
14
15
|
* Keeps track of all running queries
|
|
15
16
|
*/
|
|
16
17
|
export class QueryManager {
|
|
17
|
-
constructor(
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
constructor(init) {
|
|
19
|
+
this.components = new Components();
|
|
20
|
+
const { lan = false, disjointPaths = K, alpha = ALPHA } = init;
|
|
20
21
|
this.disjointPaths = disjointPaths ?? K;
|
|
21
22
|
this.controllers = new Set();
|
|
22
23
|
this.running = false;
|
|
23
24
|
this.alpha = alpha ?? ALPHA;
|
|
24
25
|
this.lan = lan;
|
|
25
|
-
this.metrics = metrics;
|
|
26
26
|
this.queries = 0;
|
|
27
27
|
}
|
|
28
|
+
init(components) {
|
|
29
|
+
this.components = components;
|
|
30
|
+
}
|
|
28
31
|
isStarted() {
|
|
29
32
|
return this.running;
|
|
30
33
|
}
|
|
@@ -78,7 +81,7 @@ export class QueryManager {
|
|
|
78
81
|
try {
|
|
79
82
|
log('query:start');
|
|
80
83
|
this.queries++;
|
|
81
|
-
this.
|
|
84
|
+
this.components.getMetrics()?.updateComponentMetric({
|
|
82
85
|
system: 'libp2p',
|
|
83
86
|
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
84
87
|
metric: METRIC_RUNNING_QUERIES,
|
|
@@ -93,7 +96,7 @@ export class QueryManager {
|
|
|
93
96
|
return queryPath({
|
|
94
97
|
key,
|
|
95
98
|
startingPeer: peer,
|
|
96
|
-
ourPeerId: this.
|
|
99
|
+
ourPeerId: this.components.getPeerId(),
|
|
97
100
|
signal,
|
|
98
101
|
query: queryFunc,
|
|
99
102
|
pathIndex: index,
|
|
@@ -126,7 +129,7 @@ export class QueryManager {
|
|
|
126
129
|
timeoutController.clear();
|
|
127
130
|
}
|
|
128
131
|
this.queries--;
|
|
129
|
-
this.
|
|
132
|
+
this.components.getMetrics()?.updateComponentMetric({
|
|
130
133
|
system: 'libp2p',
|
|
131
134
|
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
132
135
|
metric: METRIC_RUNNING_QUERIES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EACL,KAAK,EAAE,CAAC,EAAE,qBAAqB,EAChC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO;AACL,4CAA4C;AAC5C,eAAe,EAChB,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-path.d.ts","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"query-path.d.ts","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAIxD,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,GAAG,EAAE,UAAU,CAAA;IAEf;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,EAAE,WAAW,CAAA;IAEnB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAEhB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;IAEpC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;GAGG;AACH,wBAAwB,SAAS,CAAE,OAAO,EAAE,gBAAgB,+CAkH3D"}
|
|
@@ -7,7 +7,6 @@ import { convertPeerId, convertBuffer } from '../utils.js';
|
|
|
7
7
|
import { TimeoutController } from 'timeout-abort-controller';
|
|
8
8
|
import { anySignal } from 'any-signal';
|
|
9
9
|
import { queryErrorEvent } from './events.js';
|
|
10
|
-
import { base58btc } from 'multiformats/bases/base58';
|
|
11
10
|
const MAX_XOR = BigInt('0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
|
|
12
11
|
/**
|
|
13
12
|
* Walks a path through the DHT, calling the passed query function for
|
|
@@ -32,7 +31,7 @@ export async function* queryPath(options) {
|
|
|
32
31
|
if (peer == null) {
|
|
33
32
|
return;
|
|
34
33
|
}
|
|
35
|
-
peersSeen.add(peer.toString(
|
|
34
|
+
peersSeen.add(peer.toString());
|
|
36
35
|
const peerXor = BigInt('0x' + toString(xor(peerKadId, kadId), 'base16'));
|
|
37
36
|
queue.add(async () => {
|
|
38
37
|
let timeout;
|
|
@@ -56,7 +55,7 @@ export async function* queryPath(options) {
|
|
|
56
55
|
// if there are closer peers and the query has not completed, continue the query
|
|
57
56
|
if (event.name === 'PEER_RESPONSE') {
|
|
58
57
|
for (const closerPeer of event.closer) {
|
|
59
|
-
if (peersSeen.has(closerPeer.id.toString(
|
|
58
|
+
if (peersSeen.has(closerPeer.id.toString())) { // eslint-disable-line max-depth
|
|
60
59
|
log('already seen %p in query', closerPeer.id);
|
|
61
60
|
continue;
|
|
62
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-path.js","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"query-path.js","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"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"}
|
package/dist/src/query-self.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { PeerRouting } from './peer-routing/index.js';
|
|
2
|
-
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
3
2
|
import type { Startable } from '@libp2p/interfaces';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { Components, Initializable } from '@libp2p/interfaces/components';
|
|
4
|
+
export interface QuerySelfInit {
|
|
6
5
|
lan: boolean;
|
|
7
6
|
peerRouting: PeerRouting;
|
|
8
7
|
count?: number;
|
|
@@ -12,9 +11,9 @@ export interface QuerySelfOptions {
|
|
|
12
11
|
/**
|
|
13
12
|
* Receives notifications of new peers joining the network that support the DHT protocol
|
|
14
13
|
*/
|
|
15
|
-
export declare class QuerySelf implements Startable {
|
|
14
|
+
export declare class QuerySelf implements Startable, Initializable {
|
|
16
15
|
private readonly log;
|
|
17
|
-
private
|
|
16
|
+
private components;
|
|
18
17
|
private readonly peerRouting;
|
|
19
18
|
private readonly count;
|
|
20
19
|
private readonly interval;
|
|
@@ -22,7 +21,8 @@ export declare class QuerySelf implements Startable {
|
|
|
22
21
|
private running;
|
|
23
22
|
private timeoutId?;
|
|
24
23
|
private controller?;
|
|
25
|
-
constructor(
|
|
24
|
+
constructor(init: QuerySelfInit);
|
|
25
|
+
init(components: Components): void;
|
|
26
26
|
isStarted(): boolean;
|
|
27
27
|
start(): Promise<void>;
|
|
28
28
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-self.d.ts","sourceRoot":"","sources":["../../src/query-self.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"query-self.d.ts","sourceRoot":"","sources":["../../src/query-self.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,OAAO,CAAA;IACZ,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,qBAAa,SAAU,YAAW,SAAS,EAAE,aAAa;IACxD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAC,CAAc;IAChC,OAAO,CAAC,UAAU,CAAC,CAAiB;gBAEvB,IAAI,EAAE,aAAa;IAWhC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAInC,SAAS;IAIH,KAAK;IASL,IAAI;IAYV,UAAU;CAgCX"}
|
package/dist/src/query-self.js
CHANGED
|
@@ -7,20 +7,24 @@ import { TimeoutController } from 'timeout-abort-controller';
|
|
|
7
7
|
import { anySignal } from 'any-signal';
|
|
8
8
|
import { logger } from '@libp2p/logger';
|
|
9
9
|
import { pipe } from 'it-pipe';
|
|
10
|
+
import { Components } from '@libp2p/interfaces/components';
|
|
10
11
|
/**
|
|
11
12
|
* Receives notifications of new peers joining the network that support the DHT protocol
|
|
12
13
|
*/
|
|
13
14
|
export class QuerySelf {
|
|
14
|
-
constructor(
|
|
15
|
-
|
|
15
|
+
constructor(init) {
|
|
16
|
+
this.components = new Components();
|
|
17
|
+
const { peerRouting, lan, count, interval, queryTimeout } = init;
|
|
16
18
|
this.log = logger(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:query-self`);
|
|
17
19
|
this.running = false;
|
|
18
|
-
this.peerId = peerId;
|
|
19
20
|
this.peerRouting = peerRouting;
|
|
20
21
|
this.count = count ?? K;
|
|
21
22
|
this.interval = interval ?? QUERY_SELF_INTERVAL;
|
|
22
23
|
this.queryTimeout = queryTimeout ?? QUERY_SELF_TIMEOUT;
|
|
23
24
|
}
|
|
25
|
+
init(components) {
|
|
26
|
+
this.components = components;
|
|
27
|
+
}
|
|
24
28
|
isStarted() {
|
|
25
29
|
return this.running;
|
|
26
30
|
}
|
|
@@ -53,7 +57,7 @@ export class QuerySelf {
|
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
catch { } // fails on node < 15.4
|
|
56
|
-
const found = await pipe(this.peerRouting.getClosestPeers(this.
|
|
60
|
+
const found = await pipe(this.peerRouting.getClosestPeers(this.components.getPeerId().toBytes(), {
|
|
57
61
|
signal
|
|
58
62
|
}), (source) => take(source, this.count), async (source) => await length(source));
|
|
59
63
|
this.log('query ran successfully - found %d peers', found);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-self.js","sourceRoot":"","sources":["../../src/query-self.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,IAAI,MAAM,SAAS,CAAA;AAC1B,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,MAAM,EAAU,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"query-self.js","sourceRoot":"","sources":["../../src/query-self.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Queue from 'p-queue';
|
|
2
2
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
3
|
-
import type {
|
|
4
|
-
import
|
|
3
|
+
import type { Startable } from '@libp2p/interfaces';
|
|
4
|
+
import { Components, Initializable } from '@libp2p/interfaces/components';
|
|
5
5
|
export interface KBucketPeer {
|
|
6
6
|
id: Uint8Array;
|
|
7
7
|
peer: PeerId;
|
|
@@ -25,11 +25,8 @@ export interface KBucketTree {
|
|
|
25
25
|
count: () => number;
|
|
26
26
|
toIterable: () => Iterable<KBucket>;
|
|
27
27
|
}
|
|
28
|
-
export interface
|
|
29
|
-
peerId: PeerId;
|
|
30
|
-
dialer: Dialer;
|
|
28
|
+
export interface RoutingTableInit {
|
|
31
29
|
lan: boolean;
|
|
32
|
-
metrics?: ComponentMetricsTracker;
|
|
33
30
|
kBucketSize?: number;
|
|
34
31
|
pingTimeout?: number;
|
|
35
32
|
}
|
|
@@ -37,18 +34,17 @@ export interface RoutingTableOptions {
|
|
|
37
34
|
* A wrapper around `k-bucket`, to provide easy store and
|
|
38
35
|
* retrieval for peers.
|
|
39
36
|
*/
|
|
40
|
-
export declare class RoutingTable implements Startable {
|
|
37
|
+
export declare class RoutingTable implements Startable, Initializable {
|
|
38
|
+
kBucketSize: number;
|
|
39
|
+
kb?: KBucketTree;
|
|
40
|
+
pingQueue: Queue;
|
|
41
41
|
private readonly log;
|
|
42
|
-
private
|
|
43
|
-
dialer: Dialer;
|
|
42
|
+
private components;
|
|
44
43
|
private readonly lan;
|
|
45
|
-
private readonly metrics?;
|
|
46
|
-
kBucketSize: number;
|
|
47
44
|
private readonly pingTimeout;
|
|
48
|
-
kb?: KBucketTree;
|
|
49
45
|
private running;
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
constructor(init: RoutingTableInit);
|
|
47
|
+
init(components: Components): void;
|
|
52
48
|
isStarted(): boolean;
|
|
53
49
|
start(): Promise<void>;
|
|
54
50
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing-table/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,SAAS,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing-table/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,SAAS,CAAA;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,UAAU,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,UAAU,CAAA;IACd,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,UAAU,CAAA;IACvB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,WAAW,KAAK,IAAI,KAAK,IAAI,CAAA;IACpG,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAA;IAC1D,WAAW,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,WAAW,CAAA;IAC7C,MAAM,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;IACjC,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IAChC,GAAG,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,UAAU,CAAA;IACpC,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;CACpC;AAID,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,SAAS,EAAE,aAAa;IACpD,WAAW,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,WAAW,CAAA;IAChB,SAAS,EAAE,KAAK,CAAA;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,OAAO,CAAS;gBAEX,IAAI,EAAE,gBAAgB;IAanC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAInC,SAAS;IAIH,KAAK;IAYL,IAAI;IAMV;;;;;;;;;OASG;IACH,OAAO,CAAE,WAAW,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,WAAW;IA+D5D;;OAEG;IACH,IAAI,IAAI,WAMP;IAED;;OAEG;IACG,IAAI,CAAE,IAAI,EAAE,MAAM;IASxB;;OAEG;IACH,WAAW,CAAE,GAAG,EAAE,UAAU;IAQ5B;;OAEG;IACH,YAAY,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,SAAmB;IAUvD;;OAEG;IACG,GAAG,CAAE,IAAI,EAAE,MAAM;IAmBvB;;OAEG;IACG,MAAM,CAAE,IAAI,EAAE,MAAM;CAgB3B"}
|
|
@@ -5,32 +5,34 @@ import Queue from 'p-queue';
|
|
|
5
5
|
import { PROTOCOL_DHT } from '../constants.js';
|
|
6
6
|
import { TimeoutController } from 'timeout-abort-controller';
|
|
7
7
|
import { logger } from '@libp2p/logger';
|
|
8
|
+
import { Components } from '@libp2p/interfaces/components';
|
|
8
9
|
const METRIC_ROUTING_TABLE_SIZE = 'routing-table-size';
|
|
9
10
|
/**
|
|
10
11
|
* A wrapper around `k-bucket`, to provide easy store and
|
|
11
12
|
* retrieval for peers.
|
|
12
13
|
*/
|
|
13
14
|
export class RoutingTable {
|
|
14
|
-
constructor(
|
|
15
|
-
|
|
15
|
+
constructor(init) {
|
|
16
|
+
this.components = new Components();
|
|
17
|
+
const { kBucketSize, pingTimeout, lan } = init;
|
|
16
18
|
this.log = logger(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:routing-table`);
|
|
17
|
-
this.peerId = peerId;
|
|
18
|
-
this.dialer = dialer;
|
|
19
19
|
this.kBucketSize = kBucketSize ?? 20;
|
|
20
20
|
this.pingTimeout = pingTimeout ?? 10000;
|
|
21
21
|
this.lan = lan;
|
|
22
|
-
this.metrics = metrics;
|
|
23
22
|
this.pingQueue = new Queue({ concurrency: 1 });
|
|
24
23
|
this.running = false;
|
|
25
24
|
this._onPing = this._onPing.bind(this);
|
|
26
25
|
}
|
|
26
|
+
init(components) {
|
|
27
|
+
this.components = components;
|
|
28
|
+
}
|
|
27
29
|
isStarted() {
|
|
28
30
|
return this.running;
|
|
29
31
|
}
|
|
30
32
|
async start() {
|
|
31
33
|
this.running = true;
|
|
32
34
|
const kBuck = new KBuck({
|
|
33
|
-
localNodeId: await utils.convertPeerId(this.
|
|
35
|
+
localNodeId: await utils.convertPeerId(this.components.getPeerId()),
|
|
34
36
|
numberOfNodesPerKBucket: this.kBucketSize,
|
|
35
37
|
numberOfNodesToPing: 1
|
|
36
38
|
});
|
|
@@ -67,7 +69,7 @@ export class RoutingTable {
|
|
|
67
69
|
try {
|
|
68
70
|
timeoutController = new TimeoutController(this.pingTimeout);
|
|
69
71
|
this.log('pinging old contact %p', oldContact.peer);
|
|
70
|
-
const { stream } = await this.
|
|
72
|
+
const { stream } = await this.components.getDialer().dialProtocol(oldContact.peer, PROTOCOL_DHT, {
|
|
71
73
|
signal: timeoutController.signal
|
|
72
74
|
});
|
|
73
75
|
await stream.close();
|
|
@@ -86,7 +88,7 @@ export class RoutingTable {
|
|
|
86
88
|
if (timeoutController != null) {
|
|
87
89
|
timeoutController.clear();
|
|
88
90
|
}
|
|
89
|
-
this.
|
|
91
|
+
this.components.getMetrics()?.updateComponentMetric({
|
|
90
92
|
system: 'libp2p',
|
|
91
93
|
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
92
94
|
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
@@ -156,7 +158,7 @@ export class RoutingTable {
|
|
|
156
158
|
const id = await utils.convertPeerId(peer);
|
|
157
159
|
this.kb.add({ id: id, peer: peer });
|
|
158
160
|
this.log('added %p with kad id %b', peer, id);
|
|
159
|
-
this.
|
|
161
|
+
this.components.getMetrics()?.updateComponentMetric({
|
|
160
162
|
system: 'libp2p',
|
|
161
163
|
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
162
164
|
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
@@ -172,7 +174,7 @@ export class RoutingTable {
|
|
|
172
174
|
}
|
|
173
175
|
const id = await utils.convertPeerId(peer);
|
|
174
176
|
this.kb.remove(id);
|
|
175
|
-
this.
|
|
177
|
+
this.components.getMetrics()?.updateComponentMetric({
|
|
176
178
|
system: 'libp2p',
|
|
177
179
|
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
178
180
|
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routing-table/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routing-table/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RoutingTable } from './index.js';
|
|
2
2
|
import type { PeerRouting } from '../peer-routing/index.js';
|
|
3
|
-
|
|
3
|
+
import type { Components, Initializable } from '@libp2p/interfaces/components';
|
|
4
|
+
export interface RoutingTableRefreshInit {
|
|
4
5
|
peerRouting: PeerRouting;
|
|
5
6
|
routingTable: RoutingTable;
|
|
6
7
|
lan: boolean;
|
|
@@ -11,7 +12,7 @@ export interface RoutingTableRefreshOptions {
|
|
|
11
12
|
* A wrapper around `k-bucket`, to provide easy store and
|
|
12
13
|
* retrieval for peers.
|
|
13
14
|
*/
|
|
14
|
-
export declare class RoutingTableRefresh {
|
|
15
|
+
export declare class RoutingTableRefresh implements Initializable {
|
|
15
16
|
private readonly log;
|
|
16
17
|
private readonly peerRouting;
|
|
17
18
|
private readonly routingTable;
|
|
@@ -19,7 +20,8 @@ export declare class RoutingTableRefresh {
|
|
|
19
20
|
private readonly refreshQueryTimeout;
|
|
20
21
|
private readonly commonPrefixLengthRefreshedAt;
|
|
21
22
|
private refreshTimeoutId?;
|
|
22
|
-
constructor(
|
|
23
|
+
constructor(init: RoutingTableRefreshInit);
|
|
24
|
+
init(components: Components): void;
|
|
23
25
|
start(): Promise<void>;
|
|
24
26
|
stop(): Promise<void>;
|
|
25
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/routing-table/refresh.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/routing-table/refresh.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAO9E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,GAAG,EAAE,OAAO,CAAA;IACZ,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAQ;IACtD,OAAO,CAAC,gBAAgB,CAAC,CAAc;gBAE1B,IAAI,EAAE,uBAAuB;IAY1C,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAI7B,KAAK;IAKL,IAAI;IAMV;;;;;OAKG;IACH,YAAY,CAAE,KAAK,GAAE,OAAe;IAyD9B,0BAA0B,CAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO;IAuBhF,wCAAwC,CAAE,eAAe,EAAE,MAAM;IAe3D,qBAAqB,CAAE,wBAAwB,EAAE,MAAM;IAavD,WAAW,CAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM;IA8BjG;;;OAGG;IACH,gBAAgB;IAchB;;OAEG;IACH,eAAe,CAAE,YAAY,EAAE,MAAM;IAYrC;;OAEG;IACD,cAAc;CAoBjB"}
|
|
@@ -16,8 +16,8 @@ const MAX_COMMON_PREFIX_LENGTH = 15;
|
|
|
16
16
|
* retrieval for peers.
|
|
17
17
|
*/
|
|
18
18
|
export class RoutingTableRefresh {
|
|
19
|
-
constructor(
|
|
20
|
-
const { peerRouting, routingTable, refreshInterval, refreshQueryTimeout, lan } =
|
|
19
|
+
constructor(init) {
|
|
20
|
+
const { peerRouting, routingTable, refreshInterval, refreshQueryTimeout, lan } = init;
|
|
21
21
|
this.log = logger(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:routing-table:refresh`);
|
|
22
22
|
this.peerRouting = peerRouting;
|
|
23
23
|
this.routingTable = routingTable;
|
|
@@ -26,6 +26,8 @@ export class RoutingTableRefresh {
|
|
|
26
26
|
this.commonPrefixLengthRefreshedAt = [];
|
|
27
27
|
this.refreshTable = this.refreshTable.bind(this);
|
|
28
28
|
}
|
|
29
|
+
init(components) {
|
|
30
|
+
}
|
|
29
31
|
async start() {
|
|
30
32
|
this.log(`refreshing routing table every ${this.refreshInterval}ms`);
|
|
31
33
|
this.refreshTable(true);
|