diff --git a/package.json b/package.json index 9cd6b7c..3156909 100644 --- a/package.json +++ b/package.json @@ -87,4 +87,4 @@ "greenkeeper[bot] ", "ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ " ] -} \ No newline at end of file +} diff --git a/src/transport.js b/src/transport.js index 9d38978..7bd1a5e 100644 --- a/src/transport.js +++ b/src/transport.js @@ -1,6 +1,8 @@ 'use strict' const parallel = require('async/parallel') +const queue = require('async/queue') +const timeout = require('async/timeout') const once = require('once') const debug = require('debug') const log = debug('libp2p:swarm:transport') @@ -14,6 +16,12 @@ const defaultPerPeerRateLimit = 8 // the amount of time a single dial has to succeed const dialTimeout = 10 * 1000 +// number of concurrent outbound dials to make per peer, same as go-libp2p-swarm +const defaultPerPeerRateLimit = 8 + +// the amount of time a single dial has to succeed +const dialTimeout = 10 * 1000 + module.exports = function (swarm) { const dialer = new LimitDialer(defaultPerPeerRateLimit, dialTimeout) @@ -130,4 +138,13 @@ function dialables (tp, multiaddrs) { return tp.filter(multiaddrs) } +function dialWithTimeout (transport, multiaddr, maxTimeout, callback) { + timeout((cb) => { + const conn = transport.dial(multiaddr, (err) => { + log('dialed') + cb(err, conn) + }) + }, maxTimeout)(callback) +} + function noop () {} diff --git a/test/01-transport-tcp.node.js b/test/01-transport-tcp.node.js new file mode 100644 index 0000000..e69de29