@libp2p/kad-dht 15.0.2 → 15.1.0-aa25d38ab
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +2 -15
- package/dist/index.min.js.map +7 -0
- package/dist/src/constants.d.ts +1 -1
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +1 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/content-fetching/index.d.ts +4 -4
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +40 -13
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +88 -38
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/index.d.ts +58 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts +3 -1
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +14 -10
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/message/dht.d.ts +1 -1
- package/dist/src/message/dht.d.ts.map +1 -1
- package/dist/src/message/dht.js +0 -5
- package/dist/src/message/dht.js.map +1 -1
- package/dist/src/network.d.ts +14 -8
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +17 -16
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-distance-list.d.ts +10 -3
- package/dist/src/peer-distance-list.d.ts.map +1 -1
- package/dist/src/peer-distance-list.js +13 -5
- package/dist/src/peer-distance-list.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts +10 -8
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +79 -49
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +4 -4
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +12 -12
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/events.d.ts +15 -3
- package/dist/src/query/events.d.ts.map +1 -1
- package/dist/src/query/events.js +9 -0
- package/dist/src/query/events.js.map +1 -1
- package/dist/src/query/manager.d.ts +3 -5
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +41 -16
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query/query-path.d.ts +10 -14
- package/dist/src/query/query-path.d.ts.map +1 -1
- package/dist/src/query/query-path.js +67 -53
- package/dist/src/query/query-path.js.map +1 -1
- package/dist/src/query/types.d.ts +6 -5
- package/dist/src/query/types.d.ts.map +1 -1
- package/dist/src/query-self.d.ts +2 -3
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +11 -14
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/routing-table/closest-peers.js +1 -1
- package/dist/src/routing-table/closest-peers.js.map +1 -1
- package/dist/src/routing-table/k-bucket.js +1 -1
- package/dist/src/routing-table/k-bucket.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +1 -1
- package/dist/src/rpc/handlers/get-providers.js.map +1 -1
- package/dist/src/rpc/index.d.ts +7 -7
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +1 -1
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/topology-listener.d.ts +2 -2
- package/dist/src/topology-listener.d.ts.map +1 -1
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +4 -0
- package/dist/src/utils.js.map +1 -1
- package/package.json +30 -39
- package/src/constants.ts +1 -1
- package/src/content-fetching/index.ts +41 -14
- package/src/content-routing/index.ts +93 -45
- package/src/index.ts +65 -6
- package/src/kad-dht.ts +14 -10
- package/src/message/dht.ts +2 -7
- package/src/network.ts +36 -22
- package/src/peer-distance-list.ts +19 -7
- package/src/peer-routing/index.ts +84 -53
- package/src/providers.ts +13 -13
- package/src/query/events.ts +27 -3
- package/src/query/manager.ts +48 -22
- package/src/query/query-path.ts +86 -76
- package/src/query/types.ts +7 -5
- package/src/query-self.ts +15 -17
- package/src/routing-table/closest-peers.ts +1 -1
- package/src/routing-table/k-bucket.ts +1 -1
- package/src/rpc/handlers/add-provider.ts +1 -1
- package/src/rpc/handlers/get-providers.ts +1 -1
- package/src/rpc/index.ts +12 -8
- package/src/topology-listener.ts +2 -2
- package/src/utils.ts +9 -0
- package/dist/typedoc-urls.json +0 -59
package/dist/src/constants.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const REPROVIDE_INTERVAL: number;
|
|
|
15
15
|
export declare const READ_MESSAGE_TIMEOUT: number;
|
|
16
16
|
export declare const GET_MANY_RECORD_COUNT = 16;
|
|
17
17
|
export declare const K = 20;
|
|
18
|
-
export declare const ALPHA =
|
|
18
|
+
export declare const ALPHA = 10;
|
|
19
19
|
export declare const QUERY_SELF_INTERVAL: number;
|
|
20
20
|
export declare const QUERY_SELF_INITIAL_INTERVAL = 1000;
|
|
21
21
|
export declare const QUERY_SELF_TIMEOUT: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,OAAO,CAAA;AAC1B,eAAO,MAAM,MAAM,QAAc,CAAA;AACjC,eAAO,MAAM,IAAI,QAAc,CAAA;AAE/B,eAAO,MAAM,cAAc,QAAY,CAAA;AAEvC,eAAO,MAAM,QAAQ,oBAAoB,CAAA;AAEzC;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAY,CAAA;AAE3C,eAAO,MAAM,0BAA0B,QAAO,CAAA;AAG9C,eAAO,MAAM,mBAAmB,QAAY,CAAA;AAG5C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAGvC,eAAO,MAAM,wBAAwB,QAAS,CAAA;AAG9C,eAAO,MAAM,kBAAkB,QAAO,CAAA;AAEtC,eAAO,MAAM,oBAAoB,QAAc,CAAA;AAG/C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAGvC,eAAO,MAAM,CAAC,KAAK,CAAA;AAGnB,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,OAAO,CAAA;AAC1B,eAAO,MAAM,MAAM,QAAc,CAAA;AACjC,eAAO,MAAM,IAAI,QAAc,CAAA;AAE/B,eAAO,MAAM,cAAc,QAAY,CAAA;AAEvC,eAAO,MAAM,QAAQ,oBAAoB,CAAA;AAEzC;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAY,CAAA;AAE3C,eAAO,MAAM,0BAA0B,QAAO,CAAA;AAG9C,eAAO,MAAM,mBAAmB,QAAY,CAAA;AAG5C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAGvC,eAAO,MAAM,wBAAwB,QAAS,CAAA;AAG9C,eAAO,MAAM,kBAAkB,QAAO,CAAA;AAEtC,eAAO,MAAM,oBAAoB,QAAc,CAAA;AAG/C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAGvC,eAAO,MAAM,CAAC,KAAK,CAAA;AAGnB,eAAO,MAAM,KAAK,KAAK,CAAA;AAGvB,eAAO,MAAM,mBAAmB,QAAa,CAAA;AAG7C,eAAO,MAAM,2BAA2B,OAAS,CAAA;AAGjD,eAAO,MAAM,kBAAkB,QAAa,CAAA;AAG5C,eAAO,MAAM,sBAAsB,QAAa,CAAA;AAGhD,eAAO,MAAM,2BAA2B,QAAc,CAAA;AAGtD,eAAO,MAAM,qBAAqB,QAAe,CAAA;AAGjD,eAAO,MAAM,cAAc,uBAA0B,CAAA"}
|
package/dist/src/constants.js
CHANGED
|
@@ -23,7 +23,7 @@ export const GET_MANY_RECORD_COUNT = 16;
|
|
|
23
23
|
// K is the maximum number of requests to perform before returning failure
|
|
24
24
|
export const K = 20;
|
|
25
25
|
// Alpha is the concurrency for asynchronous requests
|
|
26
|
-
export const ALPHA =
|
|
26
|
+
export const ALPHA = 10;
|
|
27
27
|
// How often we look for our closest DHT neighbors
|
|
28
28
|
export const QUERY_SELF_INTERVAL = 5 * minute;
|
|
29
29
|
// How often we look for the first set of our closest DHT neighbors
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAA;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,iBAAiB,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAA;AAE3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAA;AAE9C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAA;AAE5C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEvC,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAA;AAE9C,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/C,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEvC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;AAEnB,qDAAqD;AACrD,MAAM,CAAC,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAA;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,iBAAiB,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAA;AAE3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAA;AAE9C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAA;AAE5C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEvC,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAA;AAE9C,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/C,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEvC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;AAEnB,qDAAqD;AACrD,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAA;AAEvB,kDAAkD;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,MAAM,CAAA;AAE7C,mEAAmE;AACnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAA;AAEjD,qDAAqD;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAA;AAE5C,qCAAqC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAA;AAEhD,yCAAyC;AACzC,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,MAAM,CAAA;AAEtD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,GAAG,MAAM,CAAA;AAEjD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,UAAU,UAAU,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Libp2pRecord } from '@libp2p/record';
|
|
2
2
|
import type { KadDHTComponents, Validators, Selectors, ValueEvent, QueryEvent } from '../index.js';
|
|
3
|
-
import type { Network } from '../network.js';
|
|
3
|
+
import type { Network, SendMessageOptions } from '../network.js';
|
|
4
4
|
import type { PeerRouting } from '../peer-routing/index.js';
|
|
5
5
|
import type { QueryManager } from '../query/manager.js';
|
|
6
6
|
import type { RoutingOptions } from '@libp2p/interface';
|
|
@@ -31,15 +31,15 @@ export declare class ContentFetching {
|
|
|
31
31
|
/**
|
|
32
32
|
* Send the best record found to any peers that have an out of date record
|
|
33
33
|
*/
|
|
34
|
-
sendCorrectionRecord(key: Uint8Array, vals: ValueEvent[], best: Uint8Array, options
|
|
34
|
+
sendCorrectionRecord(key: Uint8Array, vals: ValueEvent[], best: Uint8Array, options: SendMessageOptions): AsyncGenerator<QueryEvent>;
|
|
35
35
|
/**
|
|
36
36
|
* Store the given key/value pair in the DHT
|
|
37
37
|
*/
|
|
38
|
-
put(key: Uint8Array, value: Uint8Array, options
|
|
38
|
+
put(key: Uint8Array, value: Uint8Array, options: RoutingOptions): AsyncGenerator<unknown, void, undefined>;
|
|
39
39
|
/**
|
|
40
40
|
* Get the value to the given key
|
|
41
41
|
*/
|
|
42
|
-
get(key: Uint8Array, options
|
|
42
|
+
get(key: Uint8Array, options: RoutingOptions): AsyncGenerator<QueryEvent | ValueEvent>;
|
|
43
43
|
/**
|
|
44
44
|
* Get the `n` values to the given key without sorting
|
|
45
45
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAiB7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAElG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAiB7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAElG,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE/D,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,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,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;gBAE3B,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB;IAoBpE;;;OAGG;IACG,QAAQ,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBvD;;OAEG;IACK,oBAAoB,CAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,GAAG,cAAc,CAAC,UAAU,CAAC;IAgD7I;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;IAkEnH;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,GAAG,cAAc,CAAC,UAAU,GAAG,UAAU,CAAC;IAkD/F;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,CAAC;CA2C5F"}
|
|
@@ -54,7 +54,7 @@ export class ContentFetching {
|
|
|
54
54
|
/**
|
|
55
55
|
* Send the best record found to any peers that have an out of date record
|
|
56
56
|
*/
|
|
57
|
-
async *sendCorrectionRecord(key, vals, best, options
|
|
57
|
+
async *sendCorrectionRecord(key, vals, best, options) {
|
|
58
58
|
this.log('sendCorrection for %b', key);
|
|
59
59
|
const fixupRec = createPutRecord(key, best);
|
|
60
60
|
for (const { value, from } of vals) {
|
|
@@ -89,7 +89,7 @@ export class ContentFetching {
|
|
|
89
89
|
yield event;
|
|
90
90
|
}
|
|
91
91
|
if (!sentCorrection) {
|
|
92
|
-
|
|
92
|
+
throw new QueryError('Could not send correction');
|
|
93
93
|
}
|
|
94
94
|
this.log.error('Failed error correcting entry');
|
|
95
95
|
}
|
|
@@ -97,7 +97,7 @@ export class ContentFetching {
|
|
|
97
97
|
/**
|
|
98
98
|
* Store the given key/value pair in the DHT
|
|
99
99
|
*/
|
|
100
|
-
async *put(key, value, options
|
|
100
|
+
async *put(key, value, options) {
|
|
101
101
|
this.log('put key %b value %b', key, value);
|
|
102
102
|
// create record in the dht format
|
|
103
103
|
const record = createPutRecord(key, value);
|
|
@@ -121,13 +121,20 @@ export class ContentFetching {
|
|
|
121
121
|
record
|
|
122
122
|
};
|
|
123
123
|
this.log('send put to %p', event.peer.id);
|
|
124
|
-
for await (const putEvent of this.network.sendRequest(event.peer.id, msg,
|
|
124
|
+
for await (const putEvent of this.network.sendRequest(event.peer.id, msg, {
|
|
125
|
+
...options,
|
|
126
|
+
path: event.path
|
|
127
|
+
})) {
|
|
125
128
|
events.push(putEvent);
|
|
126
129
|
if (putEvent.name !== 'PEER_RESPONSE') {
|
|
127
130
|
continue;
|
|
128
131
|
}
|
|
129
132
|
if (!(putEvent.record != null && uint8ArrayEquals(putEvent.record.value, Libp2pRecord.deserialize(record).value))) {
|
|
130
|
-
events.push(queryErrorEvent({
|
|
133
|
+
events.push(queryErrorEvent({
|
|
134
|
+
from: event.peer.id,
|
|
135
|
+
error: new QueryError('Value not put correctly'),
|
|
136
|
+
path: putEvent.path
|
|
137
|
+
}, options));
|
|
131
138
|
}
|
|
132
139
|
}
|
|
133
140
|
return events;
|
|
@@ -144,12 +151,13 @@ export class ContentFetching {
|
|
|
144
151
|
/**
|
|
145
152
|
* Get the value to the given key
|
|
146
153
|
*/
|
|
147
|
-
async *get(key, options
|
|
154
|
+
async *get(key, options) {
|
|
148
155
|
this.log('get %b', key);
|
|
149
156
|
const vals = [];
|
|
150
157
|
for await (const event of this.getMany(key, options)) {
|
|
151
158
|
if (event.name === 'VALUE') {
|
|
152
159
|
vals.push(event);
|
|
160
|
+
continue;
|
|
153
161
|
}
|
|
154
162
|
yield event;
|
|
155
163
|
}
|
|
@@ -172,7 +180,15 @@ export class ContentFetching {
|
|
|
172
180
|
if (best == null) {
|
|
173
181
|
throw new NotFoundError('Best value was not found');
|
|
174
182
|
}
|
|
175
|
-
yield* this.sendCorrectionRecord(key, vals, best,
|
|
183
|
+
yield* this.sendCorrectionRecord(key, vals, best, {
|
|
184
|
+
...options,
|
|
185
|
+
path: {
|
|
186
|
+
index: -1,
|
|
187
|
+
queued: 0,
|
|
188
|
+
running: 0,
|
|
189
|
+
total: 0
|
|
190
|
+
}
|
|
191
|
+
});
|
|
176
192
|
yield vals[i];
|
|
177
193
|
}
|
|
178
194
|
/**
|
|
@@ -184,21 +200,32 @@ export class ContentFetching {
|
|
|
184
200
|
const localRec = await this.getLocal(key);
|
|
185
201
|
yield valueEvent({
|
|
186
202
|
value: localRec.value,
|
|
187
|
-
from: this.components.peerId
|
|
203
|
+
from: this.components.peerId,
|
|
204
|
+
path: {
|
|
205
|
+
index: -1,
|
|
206
|
+
running: 0,
|
|
207
|
+
queued: 0,
|
|
208
|
+
total: 0
|
|
209
|
+
}
|
|
188
210
|
}, options);
|
|
189
211
|
}
|
|
190
212
|
catch (err) {
|
|
191
213
|
this.log('error getting local value for %b', key, err);
|
|
192
214
|
}
|
|
193
|
-
const self = this;
|
|
194
|
-
const getValueQuery = async function* ({ peer, signal }) {
|
|
195
|
-
for await (const event of self.peerRouting.getValueOrPeers(peer, key, {
|
|
215
|
+
const self = this;
|
|
216
|
+
const getValueQuery = async function* ({ peer, signal, path }) {
|
|
217
|
+
for await (const event of self.peerRouting.getValueOrPeers(peer.id, key, {
|
|
196
218
|
...options,
|
|
197
|
-
signal
|
|
219
|
+
signal,
|
|
220
|
+
path
|
|
198
221
|
})) {
|
|
199
222
|
yield event;
|
|
200
223
|
if (event.name === 'PEER_RESPONSE' && (event.record != null)) {
|
|
201
|
-
yield valueEvent({
|
|
224
|
+
yield valueEvent({
|
|
225
|
+
from: peer.id,
|
|
226
|
+
value: event.record.value,
|
|
227
|
+
path
|
|
228
|
+
}, options);
|
|
202
229
|
}
|
|
203
230
|
}
|
|
204
231
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAkB,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEjH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,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,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,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,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB;IAmCnE;;;OAGG;IACK,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;IA6F9H;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,GAAG,cAAc,CAAC,iBAAiB,GAAG,aAAa,GAAG,UAAU,CAAC;CA+G1H"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { PeerSet } from '@libp2p/peer-collections';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { pipe } from 'it-pipe';
|
|
2
|
+
import { Queue } from '@libp2p/utils/queue';
|
|
3
|
+
import { pushable } from 'it-pushable';
|
|
5
4
|
import { ALPHA } from '../constants.js';
|
|
6
5
|
import { MessageType } from '../message/dht.js';
|
|
7
6
|
import { toPbPeerInfo } from '../message/utils.js';
|
|
@@ -64,39 +63,66 @@ export class ContentRouting {
|
|
|
64
63
|
]
|
|
65
64
|
};
|
|
66
65
|
let sent = 0;
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
this.log('sent provider record for %s to %p', key, event.peer.id);
|
|
79
|
-
sent++;
|
|
80
|
-
}
|
|
81
|
-
events.push(sendEvent);
|
|
66
|
+
const self = this;
|
|
67
|
+
async function* publishProviderRecord(event) {
|
|
68
|
+
try {
|
|
69
|
+
self.log('sending provider record for %s to %p', key, event.peer.id);
|
|
70
|
+
for await (const addProviderEvent of self.network.sendMessage(event.peer.id, msg, {
|
|
71
|
+
...options,
|
|
72
|
+
path: event.path
|
|
73
|
+
})) {
|
|
74
|
+
if (addProviderEvent.name === 'PEER_RESPONSE') {
|
|
75
|
+
self.log('sent provider record for %s to %p', key, event.peer.id);
|
|
76
|
+
sent++;
|
|
82
77
|
}
|
|
78
|
+
yield addProviderEvent;
|
|
83
79
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
self.log.error('error sending provide record to peer %p', event.peer.id, err);
|
|
83
|
+
yield queryErrorEvent({
|
|
84
|
+
from: event.peer.id,
|
|
85
|
+
error: err,
|
|
86
|
+
path: event.path
|
|
87
|
+
}, options);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const events = pushable({
|
|
91
|
+
objectMode: true
|
|
92
|
+
});
|
|
93
|
+
const queue = new Queue({
|
|
94
94
|
concurrency: ALPHA
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
});
|
|
96
|
+
queue.addEventListener('idle', () => {
|
|
97
|
+
events.end();
|
|
98
|
+
});
|
|
99
|
+
queue.addEventListener('error', (err) => {
|
|
100
|
+
this.log.error('error publishing provider record to peer - %e', err);
|
|
101
|
+
});
|
|
102
|
+
queue.add(async () => {
|
|
103
|
+
const finalPeerEvents = [];
|
|
104
|
+
for await (const event of this.peerRouting.getClosestPeers(target, options)) {
|
|
105
|
+
events.push(event);
|
|
106
|
+
if (event.name !== 'FINAL_PEER') {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
finalPeerEvents.push(event);
|
|
98
110
|
}
|
|
111
|
+
finalPeerEvents.forEach(event => {
|
|
112
|
+
queue.add(async () => {
|
|
113
|
+
for await (const notifyEvent of publishProviderRecord(event)) {
|
|
114
|
+
events.push(notifyEvent);
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
.catch(err => {
|
|
118
|
+
this.log.error('error publishing provider record to peer - %e', err);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
})
|
|
122
|
+
.catch(err => {
|
|
123
|
+
events.end(err);
|
|
99
124
|
});
|
|
125
|
+
yield* events;
|
|
100
126
|
this.log('sent provider records to %d peers', sent);
|
|
101
127
|
}
|
|
102
128
|
/**
|
|
@@ -106,7 +132,7 @@ export class ContentRouting {
|
|
|
106
132
|
const toFind = this.routingTable.kBucketSize;
|
|
107
133
|
let found = 0;
|
|
108
134
|
const target = key.multihash.bytes;
|
|
109
|
-
const self = this;
|
|
135
|
+
const self = this;
|
|
110
136
|
this.log('findProviders %c', key);
|
|
111
137
|
const provs = await this.providers.getProviders(key);
|
|
112
138
|
// yield values if we have some, also slice because maybe we got lucky and already have too many?
|
|
@@ -127,8 +153,27 @@ export class ContentRouting {
|
|
|
127
153
|
this.log('no peer store entry for %p', peerId);
|
|
128
154
|
}
|
|
129
155
|
}
|
|
130
|
-
yield peerResponseEvent({
|
|
131
|
-
|
|
156
|
+
yield peerResponseEvent({
|
|
157
|
+
from: this.components.peerId,
|
|
158
|
+
messageType: MessageType.GET_PROVIDERS,
|
|
159
|
+
providers,
|
|
160
|
+
path: {
|
|
161
|
+
index: -1,
|
|
162
|
+
queued: 0,
|
|
163
|
+
running: 0,
|
|
164
|
+
total: 0
|
|
165
|
+
}
|
|
166
|
+
}, options);
|
|
167
|
+
yield providerEvent({
|
|
168
|
+
from: this.components.peerId,
|
|
169
|
+
providers,
|
|
170
|
+
path: {
|
|
171
|
+
index: -1,
|
|
172
|
+
queued: 0,
|
|
173
|
+
running: 0,
|
|
174
|
+
total: 0
|
|
175
|
+
}
|
|
176
|
+
}, options);
|
|
132
177
|
found += providers.length;
|
|
133
178
|
if (found >= toFind) {
|
|
134
179
|
return;
|
|
@@ -137,14 +182,15 @@ export class ContentRouting {
|
|
|
137
182
|
/**
|
|
138
183
|
* The query function to use on this particular disjoint path
|
|
139
184
|
*/
|
|
140
|
-
const findProvidersQuery = async function* ({ peer, signal }) {
|
|
185
|
+
const findProvidersQuery = async function* ({ peer, signal, path }) {
|
|
141
186
|
const request = {
|
|
142
187
|
type: MessageType.GET_PROVIDERS,
|
|
143
188
|
key: target
|
|
144
189
|
};
|
|
145
|
-
yield* self.network.sendRequest(peer, request, {
|
|
190
|
+
yield* self.network.sendRequest(peer.id, request, {
|
|
146
191
|
...options,
|
|
147
|
-
signal
|
|
192
|
+
signal,
|
|
193
|
+
path
|
|
148
194
|
});
|
|
149
195
|
};
|
|
150
196
|
const providers = new PeerSet(provs);
|
|
@@ -161,7 +207,11 @@ export class ContentRouting {
|
|
|
161
207
|
newProviders.push(peer);
|
|
162
208
|
}
|
|
163
209
|
if (newProviders.length > 0) {
|
|
164
|
-
yield providerEvent({
|
|
210
|
+
yield providerEvent({
|
|
211
|
+
from: event.from,
|
|
212
|
+
providers: newProviders,
|
|
213
|
+
path: event.path
|
|
214
|
+
}, options);
|
|
165
215
|
found += newProviders.length;
|
|
166
216
|
if (found >= toFind) {
|
|
167
217
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -136,7 +136,7 @@ import { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughM
|
|
|
136
136
|
import type { Libp2pEvents, ComponentLogger, TypedEventTarget, Metrics, PeerId, PeerInfo, PeerStore, RoutingOptions, PrivateKey } from '@libp2p/interface';
|
|
137
137
|
import type { AddressManager, ConnectionManager, Registrar } from '@libp2p/interface-internal';
|
|
138
138
|
import type { Ping } from '@libp2p/ping';
|
|
139
|
-
import type { AdaptiveTimeoutInit } from '@libp2p/utils/
|
|
139
|
+
import type { AdaptiveTimeoutInit } from '@libp2p/utils/adaptive-timeout';
|
|
140
140
|
import type { Datastore } from 'interface-datastore';
|
|
141
141
|
import type { CID } from 'multiformats/cid';
|
|
142
142
|
import type { ProgressEvent } from 'progress-events';
|
|
@@ -153,7 +153,8 @@ export declare enum EventTypes {
|
|
|
153
153
|
PROVIDER = 4,
|
|
154
154
|
VALUE = 5,
|
|
155
155
|
ADD_PEER = 6,
|
|
156
|
-
DIAL_PEER = 7
|
|
156
|
+
DIAL_PEER = 7,
|
|
157
|
+
PATH_ENDED = 8
|
|
157
158
|
}
|
|
158
159
|
/**
|
|
159
160
|
* The types of messages sent to peers during DHT queries
|
|
@@ -166,6 +167,12 @@ export interface DHTRecord {
|
|
|
166
167
|
timeReceived?: Date;
|
|
167
168
|
}
|
|
168
169
|
export type DHTProgressEvents = ProgressEvent<'kad-dht:query:send-query', SendQueryEvent> | ProgressEvent<'kad-dht:query:peer-response', PeerResponseEvent> | ProgressEvent<'kad-dht:query:final-peer', FinalPeerEvent> | ProgressEvent<'kad-dht:query:query-error', QueryErrorEvent> | ProgressEvent<'kad-dht:query:provider', ProviderEvent> | ProgressEvent<'kad-dht:query:value', ValueEvent> | ProgressEvent<'kad-dht:query:add-peer', AddPeerEvent> | ProgressEvent<'kad-dht:query:dial-peer', DialPeerEvent>;
|
|
170
|
+
export interface DisjointPath {
|
|
171
|
+
index: number;
|
|
172
|
+
queued: number;
|
|
173
|
+
running: number;
|
|
174
|
+
total: number;
|
|
175
|
+
}
|
|
169
176
|
/**
|
|
170
177
|
* Emitted when sending queries to remote peers
|
|
171
178
|
*/
|
|
@@ -175,6 +182,7 @@ export interface SendQueryEvent {
|
|
|
175
182
|
name: 'SEND_QUERY';
|
|
176
183
|
messageName: keyof typeof MessageType;
|
|
177
184
|
messageType: MessageType;
|
|
185
|
+
path: DisjointPath;
|
|
178
186
|
}
|
|
179
187
|
/**
|
|
180
188
|
* Emitted when query responses are received form remote peers. Depending on the query
|
|
@@ -189,6 +197,7 @@ export interface PeerResponseEvent {
|
|
|
189
197
|
closer: PeerInfo[];
|
|
190
198
|
providers: PeerInfo[];
|
|
191
199
|
record?: DHTRecord;
|
|
200
|
+
path: DisjointPath;
|
|
192
201
|
}
|
|
193
202
|
/**
|
|
194
203
|
* Emitted at the end of a `findPeer` query
|
|
@@ -198,6 +207,7 @@ export interface FinalPeerEvent {
|
|
|
198
207
|
peer: PeerInfo;
|
|
199
208
|
type: EventTypes.FINAL_PEER;
|
|
200
209
|
name: 'FINAL_PEER';
|
|
210
|
+
path: DisjointPath;
|
|
201
211
|
}
|
|
202
212
|
/**
|
|
203
213
|
* Something went wrong with the query
|
|
@@ -207,6 +217,7 @@ export interface QueryErrorEvent {
|
|
|
207
217
|
type: EventTypes.QUERY_ERROR;
|
|
208
218
|
name: 'QUERY_ERROR';
|
|
209
219
|
error: Error;
|
|
220
|
+
path: DisjointPath;
|
|
210
221
|
}
|
|
211
222
|
/**
|
|
212
223
|
* Emitted when providers are found
|
|
@@ -216,6 +227,7 @@ export interface ProviderEvent {
|
|
|
216
227
|
type: EventTypes.PROVIDER;
|
|
217
228
|
name: 'PROVIDER';
|
|
218
229
|
providers: PeerInfo[];
|
|
230
|
+
path: DisjointPath;
|
|
219
231
|
}
|
|
220
232
|
/**
|
|
221
233
|
* Emitted when values are found
|
|
@@ -225,6 +237,7 @@ export interface ValueEvent {
|
|
|
225
237
|
type: EventTypes.VALUE;
|
|
226
238
|
name: 'VALUE';
|
|
227
239
|
value: Uint8Array;
|
|
240
|
+
path: DisjointPath;
|
|
228
241
|
}
|
|
229
242
|
/**
|
|
230
243
|
* Emitted when peers are added to a query
|
|
@@ -233,16 +246,26 @@ export interface AddPeerEvent {
|
|
|
233
246
|
type: EventTypes.ADD_PEER;
|
|
234
247
|
name: 'ADD_PEER';
|
|
235
248
|
peer: PeerId;
|
|
249
|
+
path: DisjointPath;
|
|
236
250
|
}
|
|
237
251
|
/**
|
|
238
|
-
* Emitted when peers are dialled as part of a query
|
|
252
|
+
* Emitted when peers are dialled and a new stream is opened as part of a query
|
|
239
253
|
*/
|
|
240
254
|
export interface DialPeerEvent {
|
|
241
255
|
peer: PeerId;
|
|
242
256
|
type: EventTypes.DIAL_PEER;
|
|
243
257
|
name: 'DIAL_PEER';
|
|
258
|
+
path: DisjointPath;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Emitted when sending queries to remote peers
|
|
262
|
+
*/
|
|
263
|
+
export interface PathEndedEvent {
|
|
264
|
+
type: EventTypes.PATH_ENDED;
|
|
265
|
+
name: 'PATH_ENDED';
|
|
266
|
+
path: DisjointPath;
|
|
244
267
|
}
|
|
245
|
-
export type QueryEvent = SendQueryEvent | PeerResponseEvent | FinalPeerEvent | QueryErrorEvent | ProviderEvent | ValueEvent | AddPeerEvent | DialPeerEvent;
|
|
268
|
+
export type QueryEvent = SendQueryEvent | PeerResponseEvent | FinalPeerEvent | QueryErrorEvent | ProviderEvent | ValueEvent | AddPeerEvent | DialPeerEvent | PathEndedEvent;
|
|
246
269
|
export interface RoutingTable {
|
|
247
270
|
size: number;
|
|
248
271
|
}
|
|
@@ -250,6 +273,21 @@ export interface PeerInfoMapper {
|
|
|
250
273
|
(peer: PeerInfo): PeerInfo;
|
|
251
274
|
}
|
|
252
275
|
export interface KadDHT {
|
|
276
|
+
/**
|
|
277
|
+
* This is the maximum size of the k-buckets and how many peers are looked up
|
|
278
|
+
* when searching for peers close to a key.
|
|
279
|
+
*/
|
|
280
|
+
readonly k: number;
|
|
281
|
+
/**
|
|
282
|
+
* Query concurrency factor - this controls how many peers we contact in
|
|
283
|
+
* parallel during a query.
|
|
284
|
+
*/
|
|
285
|
+
readonly a: number;
|
|
286
|
+
/**
|
|
287
|
+
* From section 4.4 of the S/Kademlia paper - this is how many disjoint paths
|
|
288
|
+
* are used during a query.
|
|
289
|
+
*/
|
|
290
|
+
readonly d: number;
|
|
253
291
|
/**
|
|
254
292
|
* Get a value from the DHT, the final ValueEvent will be the best value
|
|
255
293
|
*/
|
|
@@ -389,6 +427,20 @@ export interface KadDHTInit {
|
|
|
389
427
|
* @default kBucketSize
|
|
390
428
|
*/
|
|
391
429
|
kBucketSplitThreshold?: number;
|
|
430
|
+
/**
|
|
431
|
+
* How many peers are queried in parallel during a query.
|
|
432
|
+
*
|
|
433
|
+
* @default 3
|
|
434
|
+
*/
|
|
435
|
+
alpha?: number;
|
|
436
|
+
/**
|
|
437
|
+
* How many disjoint paths are used during a query
|
|
438
|
+
*
|
|
439
|
+
* @see https://telematics.tm.kit.edu/publications/Files/267/SKademlia_2007.pdf - section 4.4
|
|
440
|
+
*
|
|
441
|
+
* @default alpha
|
|
442
|
+
*/
|
|
443
|
+
disjointPaths?: number;
|
|
392
444
|
/**
|
|
393
445
|
* How many bits of the KAD-ID of peers to use when creating the routing
|
|
394
446
|
* table.
|
|
@@ -453,8 +505,8 @@ export interface KadDHTInit {
|
|
|
453
505
|
*/
|
|
454
506
|
initialQuerySelfInterval?: number;
|
|
455
507
|
/**
|
|
456
|
-
* After startup by default all queries will be paused until
|
|
457
|
-
*
|
|
508
|
+
* After startup by default all queries will be paused until there is at least
|
|
509
|
+
* one peer in the routing table.
|
|
458
510
|
*
|
|
459
511
|
* Pass true here to disable this behavior.
|
|
460
512
|
*
|