Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/webtorrent/webtorrent.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex <alxmorais8@msn.com>2021-07-24 01:05:25 +0300
committerGitHub <noreply@github.com>2021-07-24 01:05:25 +0300
commit39bb33c3cf694cdee45378ea4b30c66c93576d2a (patch)
tree654d454bbcc6bba1deab2195ccf6bcbc2bbe4f60 /lib/torrent.js
parent524618edde211a2ce2c9d1e40f68a091699442fd (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.js61
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) {