mirror of
https://github.com/webtorrent/bittorrent-tracker.git
synced 2025-02-21 20:59:02 +00:00
Provide a way to give updated announce opts via callback on setInterval
This commit is contained in:
parent
12465679f9
commit
f1669a506e
@ -53,6 +53,7 @@ function Client (peerId, port, torrent, opts) {
|
||||
|
||||
self._rtcConfig = opts.rtcConfig
|
||||
self._wrtc = opts.wrtc
|
||||
self._getAnnounceOpts = opts.getAnnounceOpts
|
||||
|
||||
debug('new client %s', self.infoHash)
|
||||
|
||||
@ -268,5 +269,10 @@ Client.prototype._defaultAnnounceOpts = function (opts) {
|
||||
if (opts.left == null && self.torrentLength != null) {
|
||||
opts.left = self.torrentLength - opts.downloaded
|
||||
}
|
||||
|
||||
if (opts.getAnnounceOpts == null) {
|
||||
opts.getAnnounceOpts = self._getAnnounceOpts
|
||||
}
|
||||
|
||||
return opts
|
||||
}
|
||||
|
@ -40,15 +40,26 @@ HTTPTracker.prototype.announce = function (opts) {
|
||||
var self = this
|
||||
if (self.destroyed) return
|
||||
|
||||
// Refresh opts if the callback is provided
|
||||
var cbopts
|
||||
if (opts.getAnnounceOpts) {
|
||||
cbopts = opts.getAnnounceOpts()
|
||||
if (cbopts.uploaded) opts.uploaded = cbopts.uploaded
|
||||
if (cbopts.downloaded) opts.downloaded = cbopts.downloaded
|
||||
if (cbopts.left) opts.left = cbopts.left
|
||||
}
|
||||
|
||||
var params = {
|
||||
numwant: opts.numwant,
|
||||
uploaded: opts.uploaded,
|
||||
downloaded: opts.downloaded,
|
||||
left: opts.left,
|
||||
event: opts.event,
|
||||
compact: (opts.compact == null) ? 1 : opts.compact,
|
||||
info_hash: self.client._infoHashBinary,
|
||||
peer_id: self.client._peerIdBinary,
|
||||
port: self.client._port
|
||||
port: self.client._port,
|
||||
extras: cbopts && cbopts.extraAnnounceOpts
|
||||
}
|
||||
if (self._trackerId) params.trackerid = self._trackerId
|
||||
|
||||
|
@ -189,6 +189,15 @@ UDPTracker.prototype._request = function (opts) {
|
||||
function announce (connectionId, opts) {
|
||||
transactionId = genTransactionId()
|
||||
|
||||
// Refresh opts if the callback is provided
|
||||
var cbopts
|
||||
if (opts.getAnnounceOpts) {
|
||||
cbopts = opts.getAnnounceOpts()
|
||||
if (cbopts.uploaded) opts.uploaded = cbopts.uploaded
|
||||
if (cbopts.downloaded) opts.downloaded = cbopts.downloaded
|
||||
if (cbopts.left) opts.left = cbopts.left
|
||||
}
|
||||
|
||||
send(Buffer.concat([
|
||||
connectionId,
|
||||
common.toUInt32(common.ACTIONS.ANNOUNCE),
|
||||
|
@ -46,15 +46,26 @@ WebSocketTracker.prototype.announce = function (opts) {
|
||||
// Limit the number of offers that are generated, since it can be slow
|
||||
var numwant = Math.min(opts.numwant, 10)
|
||||
|
||||
// Refresh opts if the callback is provided
|
||||
var cbopts
|
||||
if (opts.getAnnounceOpts) {
|
||||
cbopts = opts.getAnnounceOpts()
|
||||
if (cbopts.uploaded) opts.uploaded = cbopts.uploaded
|
||||
if (cbopts.downloaded) opts.downloaded = cbopts.downloaded
|
||||
if (cbopts.left) opts.left = cbopts.left
|
||||
}
|
||||
|
||||
self._generateOffers(numwant, function (offers) {
|
||||
var params = {
|
||||
numwant: numwant,
|
||||
uploaded: opts.uploaded || 0,
|
||||
downloaded: opts.downloaded,
|
||||
left: opts.left,
|
||||
event: opts.event,
|
||||
info_hash: self.client._infoHashBinary,
|
||||
peer_id: self.client._peerIdBinary,
|
||||
offers: offers
|
||||
offers: offers,
|
||||
extras: cbopts && cbopts.extraAnnounceOpts
|
||||
}
|
||||
if (self._trackerId) params.trackerid = self._trackerId
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user