diff --git a/lib/torrent.js b/lib/torrent.js index 77cf8988..203d5f57 100644 --- a/lib/torrent.js +++ b/lib/torrent.js @@ -114,6 +114,8 @@ class Torrent extends EventEmitter { this._servers = [] this._xsRequests = [] + this._writeCb = opts.writeCb + // TODO: remove this and expose a hook instead // optimization: don't recheck every file if it hasn't changed this._fileModtimes = opts.fileModtimes @@ -1597,7 +1599,14 @@ class Torrent extends EventEmitter { if (!cb) cb = noop const readable = new MultiStream(streams) + let read = 0 const writable = new ChunkStoreWriteStream(this.store, this.pieceLength) + if (this._writeCb) { + writable._blockstream.on('data', data => { + read += data.length + this._writeCb(this.length, read) + }) + } pump(readable, writable, err => { if (err) return cb(err)