diff options
author | Alex <alxmorais8@msn.com> | 2021-07-24 01:05:25 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-24 01:05:25 +0300 |
commit | 39bb33c3cf694cdee45378ea4b30c66c93576d2a (patch) | |
tree | 654d454bbcc6bba1deab2195ccf6bcbc2bbe4f60 /lib/torrent.js | |
parent | 524618edde211a2ce2c9d1e40f68a091699442fd (diff) |
feat: add speed limit to client (#2062)
* Add speed limit to client
* Fix standard
* Update docs/api.md
* Add changes from PR feedback
Co-authored-by: Kadu Diógenes <kadu@fnix.com.br>
Co-authored-by: Ivan Gorbanev <ivang@van.work>
Co-authored-by: ultimate-tester <jordimueters@hotmail.com>
Co-authored-by: Julen Garcia Leunda <hicom150@gmail.com>
Co-authored-by: Niklas Johansson <niklas.y.johansson@se.abb.com>
Co-authored-by: ThaUnknown <kapi.skowronek@gmail.com>
Co-authored-by: Diego RodrÃguez Baquero <github@diegorbaquero.com>
Diffstat (limited to 'lib/torrent.js')
-rw-r--r-- | lib/torrent.js | 61 |
1 files changed, 33 insertions, 28 deletions
diff --git a/lib/torrent.js b/lib/torrent.js index 0a473ba..7e98a8e 100644 --- a/lib/torrent.js +++ b/lib/torrent.js @@ -828,14 +828,15 @@ class Torrent extends EventEmitter { let newPeer if (typeof peer === 'string') { // `peer` is an addr ("ip:port" string) - newPeer = type === 'utp' ? Peer.createUTPOutgoingPeer(peer, this) : Peer.createTCPOutgoingPeer(peer, this) + newPeer = type === 'utp' + ? Peer.createUTPOutgoingPeer(peer, this, this.client.throttleGroups) + : Peer.createTCPOutgoingPeer(peer, this, this.client.throttleGroups) } else { // `peer` is a WebRTC connection (simple-peer) - newPeer = Peer.createWebRTCPeer(peer, this) + newPeer = Peer.createWebRTCPeer(peer, this, this.client.throttleGroups) } - this._peers[newPeer.id] = newPeer - this._peersLength += 1 + this._registerPeer(newPeer) if (typeof peer === 'string') { // `peer` is an addr ("ip:port" string) @@ -883,9 +884,9 @@ class Torrent extends EventEmitter { this._debug('add web seed %s', id) - const newPeer = Peer.createWebSeedPeer(conn, id, this) - this._peers[newPeer.id] = newPeer - this._peersLength += 1 + const newPeer = Peer.createWebSeedPeer(conn, id, this, this.client.throttleGroups) + + this._registerPeer(newPeer) this.emit('peer', id) } @@ -900,7 +901,31 @@ class Torrent extends EventEmitter { this._debug('add incoming peer %s', peer.id) - this._peers[peer.id] = peer + this._registerPeer(peer) + } + + _registerPeer (newPeer) { + newPeer.on('download', downloaded => { + if (this.destroyed) return + this.received += downloaded + this._downloadSpeed(downloaded) + this.client._downloadSpeed(downloaded) + this.emit('download', downloaded) + if (this.destroyed) return + this.client.emit('download', downloaded) + }) + + newPeer.on('upload', uploaded => { + if (this.destroyed) return + this.uploaded += uploaded + this._uploadSpeed(uploaded) + this.client._uploadSpeed(uploaded) + this.emit('upload', uploaded) + if (this.destroyed) return + this.client.emit('upload', uploaded) + }) + + this._peers[newPeer.id] = newPeer this._peersLength += 1 } @@ -976,26 +1001,6 @@ class Torrent extends EventEmitter { _onWire (wire, addr) { this._debug('got wire %s (%s)', wire._debugId, addr || 'Unknown') - wire.on('download', downloaded => { - if (this.destroyed) return - this.received += downloaded - this._downloadSpeed(downloaded) - this.client._downloadSpeed(downloaded) - this.emit('download', downloaded) - if (this.destroyed) return - this.client.emit('download', downloaded) - }) - - wire.on('upload', uploaded => { - if (this.destroyed) return - this.uploaded += uploaded - this._uploadSpeed(uploaded) - this.client._uploadSpeed(uploaded) - this.emit('upload', uploaded) - if (this.destroyed) return - this.client.emit('upload', uploaded) - }) - this.wires.push(wire) if (addr) { |