Skip to content

Commit fe3796b

Browse files
nijynotdirkmc
authored andcommitted
refactor: make findProviders() and findAndConnect() async/await
1 parent 2530727 commit fe3796b

File tree

6 files changed

+35
-25
lines changed

6 files changed

+35
-25
lines changed

src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ class Bitswap {
147147
}
148148

149149
_findAndConnect (cid) {
150-
this.network.findAndConnect(cid, (err) => {
150+
this.network.findAndConnect(cid).catch((err) => {
151151
if (err) this._log.error(err)
152152
})
153153
}

src/network.js

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
const lp = require('pull-length-prefixed')
44
const pull = require('pull-stream')
5-
const waterfall = require('async/waterfall')
6-
const each = require('async/each')
75
const nextTick = require('async/nextTick')
86
const promisify = require('promisify-es6')
97

@@ -98,21 +96,35 @@ class Network {
9896
this.bitswap._onPeerDisconnected(peerInfo.id)
9997
}
10098

101-
findProviders (cid, maxProviders, callback) {
102-
this.libp2p.contentRouting.findProviders(cid, {
103-
maxTimeout: CONSTANTS.providerRequestTimeout,
104-
maxNumProviders: maxProviders
105-
}, callback)
99+
/**
100+
* Find providers given a `cid`.
101+
*
102+
* @param {CID} cid
103+
* @param {number} maxProviders
104+
* @returns {Promise.<Result.<Array>>}
105+
*/
106+
findProviders (cid, maxProviders) {
107+
return promisify(this.libp2p.contentRouting.findProviders.bind(this.libp2p.contentRouting))(
108+
cid,
109+
{
110+
maxTimeout: CONSTANTS.providerRequestTimeout,
111+
maxNumProviders: maxProviders
112+
}
113+
)
106114
}
107115

108-
findAndConnect (cid, callback) {
109-
waterfall([
110-
(cb) => this.findProviders(cid, CONSTANTS.maxProvidersPerRequest, cb),
111-
(provs, cb) => {
112-
this._log('connecting to providers', provs.map((p) => p.id.toB58String()))
113-
each(provs, (p, cb) => this.connectTo(p).then(() => cb()))
114-
}
115-
], callback)
116+
/**
117+
* Find the providers of a given `cid` and connect to them.
118+
*
119+
* @param {CID} cid
120+
* @returns {void}
121+
*/
122+
async findAndConnect (cid) {
123+
const provs = await this.findProviders(cid, CONSTANTS.maxProvidersPerRequest)
124+
this._log('connecting to providers', provs.map((p) => p.id.toB58String()))
125+
await Promise.all(provs.map((p) => {
126+
return this.connectTo(p)
127+
}))
116128
}
117129

118130
provide (cid, callback) {
@@ -157,7 +169,7 @@ class Network {
157169
/**
158170
* Connects to another peer
159171
*
160-
* @param {PeerInfo|PeerId|Multiaddr}
172+
* @param {PeerInfo|PeerId|Multiaddr} peer
161173
* @returns {Promise.<Connection>}
162174
*/
163175
connectTo (peer) {

src/want-manager/msg-queue.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ module.exports = class MsgQueue {
5757
})
5858
} catch (err) {
5959
this._log.error('cant connect to peer %s: %s', this.peerId.toB58String(), err.message)
60-
return
6160
}
6261
}
6362
}

test/bitswap-mock-internals.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,8 @@ describe('bitswap with mocks', function () {
319319
stop (callback) {
320320
setImmediate(() => callback())
321321
},
322-
findAndConnect (cid, callback) {
323-
setImmediate(() => callback())
322+
findAndConnect (cid) {
323+
return new Promise(() => {})
324324
},
325325
provide (cid, callback) {
326326
setImmediate(() => callback())
@@ -345,8 +345,8 @@ describe('bitswap with mocks', function () {
345345
stop (callback) {
346346
setImmediate(() => callback())
347347
},
348-
findAndConnect (cid, callback) {
349-
setImmediate(() => callback())
348+
findAndConnect (cid) {
349+
return new Promise(() => {})
350350
},
351351
provide (cid, callback) {
352352
setImmediate(() => callback())

test/bitswap.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ describe('bitswap without DHT', function () {
8484

8585
const block = await promisify(makeBlock)()
8686
await nodes[2].bitswap.put(block)
87-
// await promisify(nodes[2].bitswap.put.bind(nodes[2].bitswap))(block)
8887

8988
nodes[0].bitswap.get(block.cid).then((block) => {
9089
expect(block).to.not.exist()

test/utils/mocks.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ exports.mockNetwork = (calls, done) => {
7777
start (callback) {
7878
setImmediate(() => callback())
7979
},
80-
findAndConnect (cid, callback) {
81-
setImmediate(() => callback())
80+
findAndConnect (cid) {
81+
return new Promise(() => {})
8282
},
8383
provide (cid, callback) {
8484
setImmediate(() => callback())

0 commit comments

Comments
 (0)