Vulture/VApp/node_modules/@videojs/xhr/lib/retry.js

133 lines
3.4 KiB
JavaScript
Raw Permalink Normal View History

"use strict";
var RetryManager = /*#__PURE__*/function () {
function RetryManager() {
this.maxAttempts_ = 1;
this.delayFactor_ = 0.1;
this.fuzzFactor_ = 0.1;
this.initialDelay_ = 1000;
this.enabled_ = false;
}
var _proto = RetryManager.prototype;
_proto.getIsEnabled = function getIsEnabled() {
return this.enabled_;
};
_proto.enable = function enable() {
this.enabled_ = true;
};
_proto.disable = function disable() {
this.enabled_ = false;
};
_proto.reset = function reset() {
this.maxAttempts_ = 1;
this.delayFactor_ = 0.1;
this.fuzzFactor_ = 0.1;
this.initialDelay_ = 1000;
this.enabled_ = false;
};
_proto.getMaxAttempts = function getMaxAttempts() {
return this.maxAttempts_;
};
_proto.setMaxAttempts = function setMaxAttempts(maxAttempts) {
this.maxAttempts_ = maxAttempts;
};
_proto.getDelayFactor = function getDelayFactor() {
return this.delayFactor_;
};
_proto.setDelayFactor = function setDelayFactor(delayFactor) {
this.delayFactor_ = delayFactor;
};
_proto.getFuzzFactor = function getFuzzFactor() {
return this.fuzzFactor_;
};
_proto.setFuzzFactor = function setFuzzFactor(fuzzFactor) {
this.fuzzFactor_ = fuzzFactor;
};
_proto.getInitialDelay = function getInitialDelay() {
return this.initialDelay_;
};
_proto.setInitialDelay = function setInitialDelay(initialDelay) {
this.initialDelay_ = initialDelay;
};
_proto.createRetry = function createRetry(_temp) {
var _ref = _temp === void 0 ? {} : _temp,
maxAttempts = _ref.maxAttempts,
delayFactor = _ref.delayFactor,
fuzzFactor = _ref.fuzzFactor,
initialDelay = _ref.initialDelay;
return new Retry({
maxAttempts: maxAttempts || this.maxAttempts_,
delayFactor: delayFactor || this.delayFactor_,
fuzzFactor: fuzzFactor || this.fuzzFactor_,
initialDelay: initialDelay || this.initialDelay_
});
};
return RetryManager;
}();
var Retry = /*#__PURE__*/function () {
function Retry(options) {
this.maxAttempts_ = options.maxAttempts;
this.delayFactor_ = options.delayFactor;
this.fuzzFactor_ = options.fuzzFactor;
this.currentDelay_ = options.initialDelay;
this.currentAttempt_ = 1;
}
var _proto2 = Retry.prototype;
_proto2.moveToNextAttempt = function moveToNextAttempt() {
this.currentAttempt_++;
var delayDelta = this.currentDelay_ * this.delayFactor_;
this.currentDelay_ = this.currentDelay_ + delayDelta;
};
_proto2.shouldRetry = function shouldRetry() {
return this.currentAttempt_ < this.maxAttempts_;
};
_proto2.getCurrentDelay = function getCurrentDelay() {
return this.currentDelay_;
};
_proto2.getCurrentMinPossibleDelay = function getCurrentMinPossibleDelay() {
return (1 - this.fuzzFactor_) * this.currentDelay_;
};
_proto2.getCurrentMaxPossibleDelay = function getCurrentMaxPossibleDelay() {
return (1 + this.fuzzFactor_) * this.currentDelay_;
}
/**
* For example fuzzFactor is 0.1
* This means ±10% deviation
* So if we have delay as 1000
* This function can generate any value from 900 to 1100
*/
;
_proto2.getCurrentFuzzedDelay = function getCurrentFuzzedDelay() {
var lowValue = this.getCurrentMinPossibleDelay();
var highValue = this.getCurrentMaxPossibleDelay();
return lowValue + Math.random() * (highValue - lowValue);
};
return Retry;
}();
module.exports = RetryManager;