@helia/bitswap 3.1.4 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/bitswap.js +1 -1
- package/dist/src/bitswap.js.map +1 -1
- package/dist/src/constants.d.ts +3 -3
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +3 -3
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +25 -11
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/network.d.ts +14 -13
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +18 -13
- package/dist/src/network.js.map +1 -1
- package/dist/src/pb/message.d.ts +133 -10
- package/dist/src/pb/message.d.ts.map +1 -1
- package/dist/src/pb/message.js +247 -27
- package/dist/src/pb/message.js.map +1 -1
- package/dist/src/peer-want-lists/index.js +2 -2
- package/dist/src/peer-want-lists/index.js.map +1 -1
- package/dist/src/want-list.d.ts +20 -7
- package/dist/src/want-list.d.ts.map +1 -1
- package/dist/src/want-list.js +46 -22
- package/dist/src/want-list.js.map +1 -1
- package/dist/typedoc-urls.json +0 -2
- package/package.json +8 -8
- package/src/bitswap.ts +1 -1
- package/src/constants.ts +3 -3
- package/src/index.ts +29 -13
- package/src/network.ts +36 -24
- package/src/pb/message.ts +395 -17
- package/src/peer-want-lists/index.ts +2 -2
- package/src/want-list.ts +67 -27
package/dist/src/want-list.js
CHANGED
|
@@ -7,7 +7,7 @@ import pDefer from 'p-defer';
|
|
|
7
7
|
import { raceEvent } from 'race-event';
|
|
8
8
|
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
9
9
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
10
|
-
import {
|
|
10
|
+
import { DEFAULT_WANTLIST_SEND_DEBOUNCE } from "./constants.js";
|
|
11
11
|
import { BlockPresenceType, WantType } from "./pb/message.js";
|
|
12
12
|
import { QueuedBitswapMessage } from "./utils/bitswap-message.js";
|
|
13
13
|
import vd from "./utils/varint-decoder.js";
|
|
@@ -19,9 +19,9 @@ export class WantList extends TypedEventEmitter {
|
|
|
19
19
|
wants;
|
|
20
20
|
network;
|
|
21
21
|
log;
|
|
22
|
-
|
|
22
|
+
sendWantlistDebounce;
|
|
23
23
|
sendMessagesTimeout;
|
|
24
|
-
|
|
24
|
+
getHasher;
|
|
25
25
|
sendingMessages;
|
|
26
26
|
constructor(components, init = {}) {
|
|
27
27
|
super();
|
|
@@ -35,13 +35,13 @@ export class WantList extends TypedEventEmitter {
|
|
|
35
35
|
metrics: components.metrics
|
|
36
36
|
});
|
|
37
37
|
this.network = components.network;
|
|
38
|
-
this.
|
|
38
|
+
this.sendWantlistDebounce = init.sendWantlistDebounce ?? DEFAULT_WANTLIST_SEND_DEBOUNCE;
|
|
39
39
|
this.log = components.logger.forComponent('helia:bitswap:wantlist');
|
|
40
|
-
this.
|
|
40
|
+
this.getHasher = components.getHasher;
|
|
41
41
|
this.network.addEventListener('bitswap:message', (evt) => {
|
|
42
|
-
this.receiveMessage(evt.detail.
|
|
42
|
+
this.receiveMessage(evt.detail.connection, evt.detail.message)
|
|
43
43
|
.catch(err => {
|
|
44
|
-
this.log.error('error receiving bitswap message from %p - %e', evt.detail.
|
|
44
|
+
this.log.error('error receiving bitswap message from %p - %e', evt.detail.connection.remotePeer, err);
|
|
45
45
|
});
|
|
46
46
|
});
|
|
47
47
|
this.network.addEventListener('peer:connected', evt => {
|
|
@@ -63,10 +63,17 @@ export class WantList extends TypedEventEmitter {
|
|
|
63
63
|
priority: options.priority ?? 1,
|
|
64
64
|
wantType: options.wantType ?? WantType.WantBlock,
|
|
65
65
|
cancel: false,
|
|
66
|
-
sendDontHave: true
|
|
66
|
+
sendDontHave: true,
|
|
67
|
+
onProgress: []
|
|
67
68
|
};
|
|
68
69
|
this.wants.set(cidStr, entry);
|
|
69
70
|
}
|
|
71
|
+
if (options.onProgress != null) {
|
|
72
|
+
entry.onProgress.push({
|
|
73
|
+
onProgress: options.onProgress,
|
|
74
|
+
signal: options.signal
|
|
75
|
+
});
|
|
76
|
+
}
|
|
70
77
|
// upgrade want-have to want-block if the new want is a WantBlock but the
|
|
71
78
|
// previous want was a WantHave
|
|
72
79
|
if (entry.wantType === WantType.WantHave && options.wantType === WantType.WantBlock) {
|
|
@@ -110,7 +117,7 @@ export class WantList extends TypedEventEmitter {
|
|
|
110
117
|
.catch(err => {
|
|
111
118
|
this.log('error sending messages to peers - %e', err);
|
|
112
119
|
});
|
|
113
|
-
}, this.
|
|
120
|
+
}, this.sendWantlistDebounce);
|
|
114
121
|
}
|
|
115
122
|
async sendMessages() {
|
|
116
123
|
this.sendingMessages = pDefer();
|
|
@@ -138,7 +145,15 @@ export class WantList extends TypedEventEmitter {
|
|
|
138
145
|
}
|
|
139
146
|
// add message to send queue
|
|
140
147
|
try {
|
|
141
|
-
await this.network.sendMessage(peerId, message
|
|
148
|
+
await this.network.sendMessage(peerId, message, {
|
|
149
|
+
onProgress: evt => {
|
|
150
|
+
this.wants.forEach(({ onProgress }) => {
|
|
151
|
+
onProgress.forEach(({ onProgress }) => {
|
|
152
|
+
onProgress(evt);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
});
|
|
142
157
|
// update list of messages sent to remote
|
|
143
158
|
for (const key of sent) {
|
|
144
159
|
sentWants.add(key);
|
|
@@ -178,7 +193,7 @@ export class WantList extends TypedEventEmitter {
|
|
|
178
193
|
priority: 1
|
|
179
194
|
});
|
|
180
195
|
// sending WantHave directly to peer
|
|
181
|
-
await this.network.sendMessage(peerId, message);
|
|
196
|
+
await this.network.sendMessage(peerId, message, options);
|
|
182
197
|
// wait for peer response
|
|
183
198
|
const event = await raceEvent(this, 'presence', options.signal, {
|
|
184
199
|
filter: (event) => {
|
|
@@ -208,7 +223,7 @@ export class WantList extends TypedEventEmitter {
|
|
|
208
223
|
priority: 1
|
|
209
224
|
});
|
|
210
225
|
// sending WantBlockResult directly to peer
|
|
211
|
-
await this.network.sendMessage(peerId, message);
|
|
226
|
+
await this.network.sendMessage(peerId, message, options);
|
|
212
227
|
// wait for peer response
|
|
213
228
|
const event = await raceEvent(this, 'presence', options.signal, {
|
|
214
229
|
filter: (event) => {
|
|
@@ -232,8 +247,8 @@ export class WantList extends TypedEventEmitter {
|
|
|
232
247
|
/**
|
|
233
248
|
* Invoked when a message is received from a bitswap peer
|
|
234
249
|
*/
|
|
235
|
-
async receiveMessage(
|
|
236
|
-
this.log('received message from %p with %d blocks',
|
|
250
|
+
async receiveMessage(connection, message) {
|
|
251
|
+
this.log('received message from %p with %d blocks', connection.remotePeer, message.blocks.length);
|
|
237
252
|
let blocksCancelled = false;
|
|
238
253
|
// process blocks
|
|
239
254
|
for (const block of message.blocks) {
|
|
@@ -245,7 +260,7 @@ export class WantList extends TypedEventEmitter {
|
|
|
245
260
|
const multicodec = values[1];
|
|
246
261
|
const hashAlg = values[2];
|
|
247
262
|
const hashLen = values[3];
|
|
248
|
-
const hasher = hashAlg === sha256.code ? sha256 : await this.
|
|
263
|
+
const hasher = hashAlg === sha256.code ? sha256 : await this.getHasher(hashAlg);
|
|
249
264
|
if (hasher == null) {
|
|
250
265
|
this.log.error('unknown hash algorithm', hashAlg);
|
|
251
266
|
continue;
|
|
@@ -257,17 +272,18 @@ export class WantList extends TypedEventEmitter {
|
|
|
257
272
|
hash = await hash;
|
|
258
273
|
}
|
|
259
274
|
const cid = CID.create(cidVersion === 0 ? 0 : 1, multicodec, hash);
|
|
260
|
-
this.log('received block from %p for %c',
|
|
275
|
+
this.log('received block from %p for %c', connection.remotePeer, cid);
|
|
261
276
|
this.safeDispatchEvent('block', {
|
|
262
277
|
detail: {
|
|
263
|
-
sender,
|
|
278
|
+
sender: connection.remotePeer,
|
|
264
279
|
cid,
|
|
265
|
-
block: block.data
|
|
280
|
+
block: block.data,
|
|
281
|
+
connection
|
|
266
282
|
}
|
|
267
283
|
});
|
|
268
284
|
this.safeDispatchEvent('presence', {
|
|
269
285
|
detail: {
|
|
270
|
-
sender,
|
|
286
|
+
sender: connection.remotePeer,
|
|
271
287
|
cid,
|
|
272
288
|
has: true,
|
|
273
289
|
block: block.data
|
|
@@ -287,10 +303,10 @@ export class WantList extends TypedEventEmitter {
|
|
|
287
303
|
// process block presences
|
|
288
304
|
for (const { cid: cidBytes, type } of message.blockPresences) {
|
|
289
305
|
const cid = CID.decode(cidBytes);
|
|
290
|
-
this.log('received %s from %p for %c', type,
|
|
306
|
+
this.log('received %s from %p for %c', type, connection.remotePeer, cid);
|
|
291
307
|
this.safeDispatchEvent('presence', {
|
|
292
308
|
detail: {
|
|
293
|
-
sender,
|
|
309
|
+
sender: connection.remotePeer,
|
|
294
310
|
cid,
|
|
295
311
|
has: type === BlockPresenceType.HaveBlock
|
|
296
312
|
}
|
|
@@ -326,7 +342,15 @@ export class WantList extends TypedEventEmitter {
|
|
|
326
342
|
return;
|
|
327
343
|
}
|
|
328
344
|
try {
|
|
329
|
-
await this.network.sendMessage(peerId, message
|
|
345
|
+
await this.network.sendMessage(peerId, message, {
|
|
346
|
+
onProgress: evt => {
|
|
347
|
+
this.wants.forEach(({ onProgress }) => {
|
|
348
|
+
onProgress.forEach(({ onProgress }) => {
|
|
349
|
+
onProgress(evt);
|
|
350
|
+
});
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
});
|
|
330
354
|
this.peers.set(peerId, sentWants);
|
|
331
355
|
}
|
|
332
356
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"want-list.js","sourceRoot":"","sources":["../../src/want-list.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"want-list.js","sourceRoot":"","sources":["../../src/want-list.ts"],"names":[],"mappings":"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"}
|
package/dist/typedoc-urls.json
CHANGED
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
"BitswapOptions": "https://ipfs.github.io/helia/interfaces/_helia_bitswap.BitswapOptions.html",
|
|
9
9
|
".:BitswapOptions": "https://ipfs.github.io/helia/interfaces/_helia_bitswap.BitswapOptions.html",
|
|
10
10
|
"BitswapProvider": "https://ipfs.github.io/helia/interfaces/_helia_bitswap.BitswapProvider.html",
|
|
11
|
-
"MultihashHasherLoader": "https://ipfs.github.io/helia/interfaces/_helia_bitswap.MultihashHasherLoader.html",
|
|
12
|
-
".:MultihashHasherLoader": "https://ipfs.github.io/helia/interfaces/_helia_bitswap.MultihashHasherLoader.html",
|
|
13
11
|
"PeerWantListEntry": "https://ipfs.github.io/helia/interfaces/_helia_bitswap.PeerWantListEntry.html",
|
|
14
12
|
".:PeerWantListEntry": "https://ipfs.github.io/helia/interfaces/_helia_bitswap.PeerWantListEntry.html",
|
|
15
13
|
"WantListEntry": "https://ipfs.github.io/helia/interfaces/_helia_bitswap.WantListEntry.html",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/bitswap",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "JavaScript implementation of the Bitswap data exchange protocol used by Helia",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia/tree/main/packages/bitswap#readme",
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
"docs": "aegir docs"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@helia/interface": "^6.
|
|
55
|
-
"@helia/utils": "^2.
|
|
56
|
-
"@libp2p/interface": "^3.
|
|
54
|
+
"@helia/interface": "^6.2.0",
|
|
55
|
+
"@helia/utils": "^2.5.0",
|
|
56
|
+
"@libp2p/interface": "^3.2.0",
|
|
57
57
|
"@libp2p/logger": "^6.0.5",
|
|
58
58
|
"@libp2p/peer-collections": "^7.0.5",
|
|
59
59
|
"@libp2p/utils": "^7.0.5",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"multiformats": "^13.4.1",
|
|
71
71
|
"p-defer": "^4.0.1",
|
|
72
72
|
"progress-events": "^1.0.1",
|
|
73
|
-
"protons-runtime": "^
|
|
73
|
+
"protons-runtime": "^6.0.1",
|
|
74
74
|
"race-event": "^1.6.1",
|
|
75
75
|
"uint8-varint": "^2.0.4",
|
|
76
76
|
"uint8arraylist": "^2.4.8",
|
|
@@ -78,16 +78,16 @@
|
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@libp2p/crypto": "^5.1.12",
|
|
81
|
-
"@libp2p/peer-id": "^6.0.
|
|
81
|
+
"@libp2p/peer-id": "^6.0.6",
|
|
82
82
|
"@types/sinon": "^21.0.0",
|
|
83
83
|
"aegir": "^47.0.22",
|
|
84
84
|
"blockstore-core": "^6.1.1",
|
|
85
85
|
"delay": "^7.0.0",
|
|
86
86
|
"it-all": "^3.0.9",
|
|
87
87
|
"p-event": "^7.0.0",
|
|
88
|
-
"p-retry": "^
|
|
88
|
+
"p-retry": "^8.0.0",
|
|
89
89
|
"p-wait-for": "^6.0.0",
|
|
90
|
-
"protons": "^
|
|
90
|
+
"protons": "^8.1.1",
|
|
91
91
|
"sinon": "^21.0.0",
|
|
92
92
|
"sinon-ts": "^2.0.0"
|
|
93
93
|
},
|
package/src/bitswap.ts
CHANGED
|
@@ -96,7 +96,7 @@ export class Bitswap implements BitswapInterface {
|
|
|
96
96
|
signal
|
|
97
97
|
})
|
|
98
98
|
|
|
99
|
-
options.onProgress?.(new CustomProgressEvent<{ cid: CID, sender: PeerId }>('bitswap:block', { cid, sender: result.
|
|
99
|
+
options.onProgress?.(new CustomProgressEvent<{ cid: CID, sender: PeerId }>('bitswap:block', { cid, sender: result.connection.remotePeer }))
|
|
100
100
|
|
|
101
101
|
return result.block
|
|
102
102
|
} finally {
|
package/src/constants.ts
CHANGED
|
@@ -2,9 +2,9 @@ export const BITSWAP_120 = '/ipfs/bitswap/1.2.0'
|
|
|
2
2
|
export const DEFAULT_MAX_SIZE_REPLACE_HAS_WITH_BLOCK = 1024
|
|
3
3
|
export const DEFAULT_MAX_INBOUND_STREAMS = 1024
|
|
4
4
|
export const DEFAULT_MAX_OUTBOUND_STREAMS = 1024
|
|
5
|
-
export const DEFAULT_MESSAGE_RECEIVE_TIMEOUT =
|
|
6
|
-
export const
|
|
7
|
-
export const DEFAULT_MESSAGE_SEND_TIMEOUT =
|
|
5
|
+
export const DEFAULT_MESSAGE_RECEIVE_TIMEOUT = 10_000
|
|
6
|
+
export const DEFAULT_WANTLIST_SEND_DEBOUNCE = 10
|
|
7
|
+
export const DEFAULT_MESSAGE_SEND_TIMEOUT = 10_000
|
|
8
8
|
export const DEFAULT_MESSAGE_SEND_CONCURRENCY = 50
|
|
9
9
|
export const DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS = false
|
|
10
10
|
export const DEFAULT_SESSION_ROOT_PRIORITY = 1
|
package/src/index.ts
CHANGED
|
@@ -9,12 +9,11 @@
|
|
|
9
9
|
import { Bitswap as BitswapClass } from './bitswap.ts'
|
|
10
10
|
import type { BitswapNetworkNotifyProgressEvents, BitswapNetworkWantProgressEvents, BitswapNetworkProgressEvents } from './network.ts'
|
|
11
11
|
import type { WantType } from './pb/message.ts'
|
|
12
|
-
import type { CreateSessionOptions, ProviderOptions, SessionBlockBroker } from '@helia/interface'
|
|
12
|
+
import type { BlockBrokerGetBlockProgressEvents, CreateSessionOptions, HasherLoader, ProviderOptions, SessionBlockBroker } from '@helia/interface'
|
|
13
13
|
import type { Routing } from '@helia/interface/routing'
|
|
14
14
|
import type { Libp2p, AbortOptions, Startable, ComponentLogger, Metrics, PeerId } from '@libp2p/interface'
|
|
15
15
|
import type { Blockstore } from 'interface-blockstore'
|
|
16
16
|
import type { CID } from 'multiformats/cid'
|
|
17
|
-
import type { MultihashHasher } from 'multiformats/hashes/interface'
|
|
18
17
|
import type { ProgressEvent, ProgressOptions } from 'progress-events'
|
|
19
18
|
|
|
20
19
|
export type BitswapWantProgressEvents =
|
|
@@ -27,7 +26,8 @@ export type BitswapWantBlockProgressEvents =
|
|
|
27
26
|
ProgressEvent<'bitswap:unwant', CID> |
|
|
28
27
|
ProgressEvent<'bitswap:want', CID> |
|
|
29
28
|
ProgressEvent<'bitswap:block', { cid: CID, sender: PeerId }> |
|
|
30
|
-
BitswapNetworkWantProgressEvents
|
|
29
|
+
BitswapNetworkWantProgressEvents |
|
|
30
|
+
BlockBrokerGetBlockProgressEvents
|
|
31
31
|
|
|
32
32
|
export type { BitswapNetworkNotifyProgressEvents }
|
|
33
33
|
export type { BitswapNetworkWantProgressEvents }
|
|
@@ -75,15 +75,12 @@ export interface Bitswap extends Startable {
|
|
|
75
75
|
createSession(options?: CreateSessionOptions<BitswapWantProgressEvents>): Required<Pick<SessionBlockBroker<BitswapWantProgressEvents>, 'retrieve' | 'addPeer'>>
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
export interface MultihashHasherLoader {
|
|
79
|
-
getHasher(codeOrName: number | string): Promise<MultihashHasher>
|
|
80
|
-
}
|
|
81
|
-
|
|
82
78
|
export interface BitswapComponents {
|
|
83
79
|
routing: Routing
|
|
84
80
|
blockstore: Blockstore
|
|
85
81
|
logger: ComponentLogger
|
|
86
82
|
libp2p: Libp2p
|
|
83
|
+
getHasher: HasherLoader
|
|
87
84
|
metrics?: Metrics
|
|
88
85
|
}
|
|
89
86
|
|
|
@@ -118,11 +115,6 @@ export interface BitswapOptions {
|
|
|
118
115
|
*/
|
|
119
116
|
runOnLimitedConnections?: boolean
|
|
120
117
|
|
|
121
|
-
/**
|
|
122
|
-
* Enables loading esoteric hash functions
|
|
123
|
-
*/
|
|
124
|
-
hashLoader?: MultihashHasherLoader
|
|
125
|
-
|
|
126
118
|
/**
|
|
127
119
|
* The protocol that we speak
|
|
128
120
|
*
|
|
@@ -137,6 +129,21 @@ export interface BitswapOptions {
|
|
|
137
129
|
*/
|
|
138
130
|
messageSendConcurrency?: number
|
|
139
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Wantlist or blocks must be sent to peers within this many milliseconds
|
|
134
|
+
*
|
|
135
|
+
* @default 10_000
|
|
136
|
+
*/
|
|
137
|
+
messageSendTimeout?: number
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Incoming wantlist or block messages must be received from peers within this
|
|
141
|
+
* many milliseconds
|
|
142
|
+
*
|
|
143
|
+
* @default 10_000
|
|
144
|
+
*/
|
|
145
|
+
messageReceiveTimeout?: number
|
|
146
|
+
|
|
140
147
|
/**
|
|
141
148
|
* When sending blocks to peers, how many messages to send at once
|
|
142
149
|
*
|
|
@@ -149,7 +156,7 @@ export interface BitswapOptions {
|
|
|
149
156
|
* This is useful for preventing slow/large peer-connections from consuming
|
|
150
157
|
* your bandwidth/streams.
|
|
151
158
|
*
|
|
152
|
-
* @default
|
|
159
|
+
* @default 10_000
|
|
153
160
|
*/
|
|
154
161
|
sendBlocksTimeout?: number
|
|
155
162
|
|
|
@@ -162,6 +169,15 @@ export interface BitswapOptions {
|
|
|
162
169
|
*/
|
|
163
170
|
sendBlocksDebounce?: number
|
|
164
171
|
|
|
172
|
+
/**
|
|
173
|
+
* When a want is added to the local wantlist, wait this many milliseconds
|
|
174
|
+
* before sending the wantlist to connected or session peers in case more
|
|
175
|
+
* wants are about to be added
|
|
176
|
+
*
|
|
177
|
+
* @default 10
|
|
178
|
+
*/
|
|
179
|
+
sendWantlistDebounce?: number
|
|
180
|
+
|
|
165
181
|
/**
|
|
166
182
|
* If the client sends a want-have, and we have the corresponding block, we
|
|
167
183
|
* check the size of the block and if it's small enough we send the block
|
package/src/network.ts
CHANGED
|
@@ -5,22 +5,22 @@ import * as lp from 'it-length-prefixed'
|
|
|
5
5
|
import map from 'it-map'
|
|
6
6
|
import { pushable } from 'it-pushable'
|
|
7
7
|
import take from 'it-take'
|
|
8
|
+
import { CID } from 'multiformats/cid'
|
|
8
9
|
import { CustomProgressEvent } from 'progress-events'
|
|
9
10
|
import { raceEvent } from 'race-event'
|
|
10
|
-
import { BITSWAP_120, DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_INCOMING_MESSAGE_SIZE, DEFAULT_MAX_OUTBOUND_STREAMS, DEFAULT_MAX_OUTGOING_MESSAGE_SIZE, DEFAULT_MAX_PROVIDERS_PER_REQUEST, DEFAULT_MESSAGE_RECEIVE_TIMEOUT, DEFAULT_MESSAGE_SEND_CONCURRENCY, DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS } from './constants.ts'
|
|
11
|
+
import { BITSWAP_120, DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_INCOMING_MESSAGE_SIZE, DEFAULT_MAX_OUTBOUND_STREAMS, DEFAULT_MAX_OUTGOING_MESSAGE_SIZE, DEFAULT_MAX_PROVIDERS_PER_REQUEST, DEFAULT_MESSAGE_RECEIVE_TIMEOUT, DEFAULT_MESSAGE_SEND_CONCURRENCY, DEFAULT_MESSAGE_SEND_TIMEOUT, DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS } from './constants.ts'
|
|
11
12
|
import { BitswapMessage } from './pb/message.ts'
|
|
12
13
|
import { mergeMessages } from './utils/merge-messages.ts'
|
|
13
14
|
import { splitMessage } from './utils/split-message.ts'
|
|
14
15
|
import type { WantOptions } from './bitswap.ts'
|
|
15
|
-
import type { MultihashHasherLoader } from './index.ts'
|
|
16
16
|
import type { Block } from './pb/message.ts'
|
|
17
17
|
import type { QueuedBitswapMessage } from './utils/bitswap-message.ts'
|
|
18
|
-
import type {
|
|
19
|
-
import type {
|
|
18
|
+
import type { BlockBrokerGetBlockProgressEvents } from '@helia/interface'
|
|
19
|
+
import type { Provider, Routing, RoutingFindProvidersProgressEvents } from '@helia/interface/routing'
|
|
20
|
+
import type { Libp2p, AbortOptions, Connection, PeerId, Topology, ComponentLogger, IdentifyResult, Counter, Metrics, Stream, OpenConnectionProgressEvents, NewStreamProgressEvents } from '@libp2p/interface'
|
|
20
21
|
import type { Logger } from '@libp2p/logger'
|
|
21
22
|
import type { PeerQueueJobOptions } from '@libp2p/utils'
|
|
22
23
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
23
|
-
import type { CID } from 'multiformats/cid'
|
|
24
24
|
import type { ProgressEvent, ProgressOptions } from 'progress-events'
|
|
25
25
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
|
26
26
|
|
|
@@ -47,24 +47,28 @@ export interface BitswapProvider {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export type BitswapNetworkProgressEvents =
|
|
50
|
-
ProgressEvent<'bitswap:dial', PeerId | Multiaddr | Multiaddr[]>
|
|
50
|
+
ProgressEvent<'bitswap:dial', PeerId | Multiaddr | Multiaddr[]> |
|
|
51
|
+
OpenConnectionProgressEvents |
|
|
52
|
+
NewStreamProgressEvents
|
|
51
53
|
|
|
52
54
|
export type BitswapNetworkWantProgressEvents =
|
|
53
55
|
ProgressEvent<'bitswap:send-wantlist', PeerId> |
|
|
54
56
|
ProgressEvent<'bitswap:send-wantlist:error', { peer: PeerId, error: Error }> |
|
|
55
57
|
ProgressEvent<'bitswap:find-providers', CID> |
|
|
56
58
|
ProgressEvent<'bitswap:found-provider', BitswapProvider> |
|
|
57
|
-
BitswapNetworkProgressEvents
|
|
59
|
+
BitswapNetworkProgressEvents |
|
|
60
|
+
RoutingFindProvidersProgressEvents |
|
|
61
|
+
BlockBrokerGetBlockProgressEvents
|
|
58
62
|
|
|
59
63
|
export type BitswapNetworkNotifyProgressEvents =
|
|
60
64
|
BitswapNetworkProgressEvents |
|
|
61
65
|
ProgressEvent<'bitswap:send-block', PeerId>
|
|
62
66
|
|
|
63
67
|
export interface NetworkInit {
|
|
64
|
-
hashLoader?: MultihashHasherLoader
|
|
65
68
|
maxInboundStreams?: number
|
|
66
69
|
maxOutboundStreams?: number
|
|
67
70
|
messageReceiveTimeout?: number
|
|
71
|
+
messageSendTimeout?: number
|
|
68
72
|
messageSendConcurrency?: number
|
|
69
73
|
protocols?: string[]
|
|
70
74
|
runOnLimitedConnections?: boolean
|
|
@@ -80,17 +84,21 @@ export interface NetworkComponents {
|
|
|
80
84
|
}
|
|
81
85
|
|
|
82
86
|
export interface BitswapMessageEventDetail {
|
|
87
|
+
/**
|
|
88
|
+
* @deprecated access the peer via connection.remotePeer instead
|
|
89
|
+
*/
|
|
83
90
|
peer: PeerId
|
|
84
91
|
message: BitswapMessage
|
|
92
|
+
connection: Connection
|
|
85
93
|
}
|
|
86
94
|
|
|
87
95
|
export interface NetworkEvents {
|
|
88
|
-
'bitswap:message': CustomEvent<
|
|
96
|
+
'bitswap:message': CustomEvent<BitswapMessageEventDetail>
|
|
89
97
|
'peer:connected': CustomEvent<PeerId>
|
|
90
98
|
'peer:disconnected': CustomEvent<PeerId>
|
|
91
99
|
}
|
|
92
100
|
|
|
93
|
-
interface SendMessageJobOptions extends AbortOptions, ProgressOptions
|
|
101
|
+
interface SendMessageJobOptions extends AbortOptions, ProgressOptions<BitswapNetworkWantProgressEvents>, PeerQueueJobOptions {
|
|
94
102
|
message: QueuedBitswapMessage
|
|
95
103
|
}
|
|
96
104
|
|
|
@@ -103,6 +111,7 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
103
111
|
private readonly maxInboundStreams: number
|
|
104
112
|
private readonly maxOutboundStreams: number
|
|
105
113
|
private readonly messageReceiveTimeout: number
|
|
114
|
+
private readonly messageSendTimeout: number
|
|
106
115
|
private registrarIds: string[]
|
|
107
116
|
private readonly metrics: { blocksSent?: Counter, dataSent?: Counter }
|
|
108
117
|
private readonly sendQueue: PeerQueue<void, SendMessageJobOptions>
|
|
@@ -125,6 +134,7 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
125
134
|
this.maxInboundStreams = init.maxInboundStreams ?? DEFAULT_MAX_INBOUND_STREAMS
|
|
126
135
|
this.maxOutboundStreams = init.maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS
|
|
127
136
|
this.messageReceiveTimeout = init.messageReceiveTimeout ?? DEFAULT_MESSAGE_RECEIVE_TIMEOUT
|
|
137
|
+
this.messageSendTimeout = init.messageSendTimeout ?? DEFAULT_MESSAGE_SEND_TIMEOUT
|
|
128
138
|
this.runOnLimitedConnections = init.runOnLimitedConnections ?? DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS
|
|
129
139
|
this.maxIncomingMessageSize = init.maxIncomingMessageSize ?? DEFAULT_MAX_OUTGOING_MESSAGE_SIZE
|
|
130
140
|
this.maxOutgoingMessageSize = init.maxOutgoingMessageSize ?? init.maxIncomingMessageSize ?? DEFAULT_MAX_INCOMING_MESSAGE_SIZE
|
|
@@ -244,10 +254,11 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
244
254
|
const message = BitswapMessage.decode(data)
|
|
245
255
|
this.log('incoming new bitswap %s message from %p on stream', stream.protocol, connection.remotePeer, stream.id)
|
|
246
256
|
|
|
247
|
-
this.safeDispatchEvent('bitswap:message', {
|
|
257
|
+
this.safeDispatchEvent<BitswapMessageEventDetail>('bitswap:message', {
|
|
248
258
|
detail: {
|
|
249
259
|
peer: connection.remotePeer,
|
|
250
|
-
message
|
|
260
|
+
message,
|
|
261
|
+
connection
|
|
251
262
|
}
|
|
252
263
|
})
|
|
253
264
|
|
|
@@ -286,7 +297,7 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
286
297
|
continue
|
|
287
298
|
}
|
|
288
299
|
|
|
289
|
-
options?.onProgress?.(new CustomProgressEvent('bitswap:found-provider', {
|
|
300
|
+
options?.onProgress?.(new CustomProgressEvent<BitswapProvider>('bitswap:found-provider', {
|
|
290
301
|
type: 'bitswap',
|
|
291
302
|
cid,
|
|
292
303
|
provider,
|
|
@@ -324,8 +335,7 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
324
335
|
}
|
|
325
336
|
|
|
326
337
|
/**
|
|
327
|
-
* Connect to the given
|
|
328
|
-
* Send the given msg (instance of Message) to the given peer
|
|
338
|
+
* Connect to the specified peer and send the given message
|
|
329
339
|
*/
|
|
330
340
|
async sendMessage (peerId: PeerId, message: QueuedBitswapMessage, options?: AbortOptions & ProgressOptions<BitswapNetworkWantProgressEvents>): Promise<void> {
|
|
331
341
|
if (!this.running) {
|
|
@@ -339,15 +349,13 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
339
349
|
if (existingJob != null) {
|
|
340
350
|
existingJob.options.message = mergeMessages(existingJob.options.message, message)
|
|
341
351
|
|
|
342
|
-
await existingJob.join(
|
|
343
|
-
signal: options?.signal
|
|
344
|
-
})
|
|
352
|
+
await existingJob.join(options)
|
|
345
353
|
|
|
346
354
|
return
|
|
347
355
|
}
|
|
348
356
|
|
|
349
357
|
await this.sendQueue.add(async (options) => {
|
|
350
|
-
const message = options
|
|
358
|
+
const message = options.message
|
|
351
359
|
|
|
352
360
|
if (message == null) {
|
|
353
361
|
throw new InvalidParametersError('No message to send')
|
|
@@ -355,10 +363,10 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
355
363
|
|
|
356
364
|
this.log('sendMessage to %p', peerId)
|
|
357
365
|
|
|
358
|
-
options
|
|
366
|
+
options.onProgress?.(new CustomProgressEvent<PeerId>('bitswap:send-wantlist', peerId))
|
|
359
367
|
|
|
360
368
|
const stream = await this.libp2p.dialProtocol(peerId, BITSWAP_120, options)
|
|
361
|
-
await stream.closeRead()
|
|
369
|
+
await stream.closeRead(options)
|
|
362
370
|
|
|
363
371
|
try {
|
|
364
372
|
for (const buf of splitMessage(message, this.maxOutgoingMessageSize)) {
|
|
@@ -369,15 +377,19 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
369
377
|
|
|
370
378
|
await stream.close(options)
|
|
371
379
|
} catch (err: any) {
|
|
372
|
-
options?.onProgress?.(new CustomProgressEvent<{ peer: PeerId, error: Error }>('bitswap:network:send-wantlist:error', { peer: peerId, error: err }))
|
|
373
380
|
this.log.error('error sending message to %p - %e', peerId, err)
|
|
381
|
+
options?.onProgress?.(new CustomProgressEvent<{ peer: PeerId, error: Error }>('bitswap:send-wantlist:error', {
|
|
382
|
+
peer: peerId,
|
|
383
|
+
error: err
|
|
384
|
+
}))
|
|
374
385
|
stream.abort(err)
|
|
375
386
|
}
|
|
376
387
|
|
|
377
388
|
this._updateSentStats(message.blocks)
|
|
378
389
|
}, {
|
|
390
|
+
onProgress: options?.onProgress,
|
|
379
391
|
peerId,
|
|
380
|
-
signal: options?.signal,
|
|
392
|
+
signal: options?.signal ?? AbortSignal.timeout(this.messageSendTimeout),
|
|
381
393
|
message
|
|
382
394
|
})
|
|
383
395
|
}
|
|
@@ -390,7 +402,7 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
390
402
|
throw new NotStartedError('Network isn\'t running')
|
|
391
403
|
}
|
|
392
404
|
|
|
393
|
-
options?.onProgress?.(new CustomProgressEvent<PeerId | Multiaddr | Multiaddr[]>('bitswap:
|
|
405
|
+
options?.onProgress?.(new CustomProgressEvent<PeerId | Multiaddr | Multiaddr[]>('bitswap:dial', peer))
|
|
394
406
|
|
|
395
407
|
// dial and wait for identify - this is to avoid opening a protocol stream
|
|
396
408
|
// that we are not going to use but depends on the remote node running the
|