Initial commit
This commit is contained in:
73
node_modules/mqtt/build/lib/KeepaliveManager.js
generated
vendored
Executable file
73
node_modules/mqtt/build/lib/KeepaliveManager.js
generated
vendored
Executable file
@@ -0,0 +1,73 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const get_timer_1 = __importDefault(require("./get-timer"));
|
||||
class KeepaliveManager {
|
||||
get keepaliveTimeoutTimestamp() {
|
||||
return this._keepaliveTimeoutTimestamp;
|
||||
}
|
||||
get intervalEvery() {
|
||||
return this._intervalEvery;
|
||||
}
|
||||
get keepalive() {
|
||||
return this._keepalive;
|
||||
}
|
||||
constructor(client, variant) {
|
||||
this.destroyed = false;
|
||||
this.client = client;
|
||||
this.timer =
|
||||
typeof variant === 'object' &&
|
||||
'set' in variant &&
|
||||
'clear' in variant
|
||||
? variant
|
||||
: (0, get_timer_1.default)(variant);
|
||||
this.setKeepalive(client.options.keepalive);
|
||||
}
|
||||
clear() {
|
||||
if (this.timerId) {
|
||||
this.timer.clear(this.timerId);
|
||||
this.timerId = null;
|
||||
}
|
||||
}
|
||||
setKeepalive(value) {
|
||||
value *= 1000;
|
||||
if (isNaN(value) ||
|
||||
value <= 0 ||
|
||||
value > 2147483647) {
|
||||
throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${value}`);
|
||||
}
|
||||
this._keepalive = value;
|
||||
this.reschedule();
|
||||
this.client['log'](`KeepaliveManager: set keepalive to ${value}ms`);
|
||||
}
|
||||
destroy() {
|
||||
this.clear();
|
||||
this.destroyed = true;
|
||||
}
|
||||
reschedule() {
|
||||
if (this.destroyed) {
|
||||
return;
|
||||
}
|
||||
this.clear();
|
||||
this.counter = 0;
|
||||
const keepAliveTimeout = Math.ceil(this._keepalive * 1.5);
|
||||
this._keepaliveTimeoutTimestamp = Date.now() + keepAliveTimeout;
|
||||
this._intervalEvery = Math.ceil(this._keepalive / 2);
|
||||
this.timerId = this.timer.set(() => {
|
||||
if (this.destroyed) {
|
||||
return;
|
||||
}
|
||||
this.counter += 1;
|
||||
if (this.counter === 2) {
|
||||
this.client.sendPing();
|
||||
}
|
||||
else if (this.counter > 2) {
|
||||
this.client.onKeepaliveTimeout();
|
||||
}
|
||||
}, this._intervalEvery);
|
||||
}
|
||||
}
|
||||
exports.default = KeepaliveManager;
|
||||
//# sourceMappingURL=KeepaliveManager.js.map
|
||||
Reference in New Issue
Block a user