Files
NTSH-Control/dist/Status.js

120 lines
4.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.StatusType = exports.State = exports.Status = void 0;
var UnityRunner_1 = require("./Unity/UnityRunner");
var Status = /** @class */ (function () {
function Status(Main) {
this.states = new Map();
this._Main = Main;
this.ensure();
this.startClock();
}
Status.prototype.update = function (type, state, message, buttons) {
this.states.set(type, { state: state, message: message, buttons: buttons });
this._Main.WebServer.socket.emit('status', this.getState());
};
Status.prototype.reboot = function (type) {
switch (type) {
case StatusType.CameraPC: {
this._Main.CameraRunner.sendCommand('reboot', function (response) {
console.log('CameraRunner reboot response:', response);
});
}
case StatusType.CameraProcess: {
this._Main.CameraRunner.sendCommand('restart', function (response) {
console.log('CameraRunner restart response:', response);
});
}
case StatusType.CameraUnityStream: {
this._Main.CameraRunner.sendCommand('restart', function (response) {
console.log('CameraRunner restart response:', response);
});
this._Main.UnityRunner.restart(UnityRunner_1.StartOrigin.Manual);
}
case StatusType.UnityBuild: {
this._Main.UnityRunner.restart(UnityRunner_1.StartOrigin.Manual);
}
case StatusType.ReplayFunction: {
console.log('ReplayFunction reboot requested. Not implemented.');
}
}
};
Status.prototype.start = function (type) {
switch (type) {
case StatusType.UnityBuild: {
this._Main.UnityRunner.requestStart(UnityRunner_1.StartOrigin.Manual);
}
}
};
Status.prototype.stop = function (type) {
switch (type) {
case StatusType.UnityBuild: {
this._Main.UnityRunner.requestStop();
}
}
};
Status.prototype.getState = function () {
var state = {};
this.states.forEach(function (value, key) {
state[key] = value;
});
return state;
};
Status.prototype.startClock = function () {
var _this = this;
var hadInvalidLastRound = false;
setInterval(function () {
var hasInvalid = false;
_this.states.forEach(function (state, key) {
if (state.state === State.Red)
hasInvalid = true;
});
if (hasInvalid && !hadInvalidLastRound) {
hadInvalidLastRound = true;
console.warn('One ore more status entries are invalid, waiting to see if they recover...');
}
else if (hasInvalid && hadInvalidLastRound) {
console.error('One ore more status entries are still invalid after 5 seconds, restarting system.');
_this._Main.Twilio.sendError('Status', 'One ore more status entries are still invalid after 5 seconds, restarting system.');
_this._Main.restart();
}
else {
_this._Main.Twilio.sendError('Status', null);
hadInvalidLastRound = false;
}
}, 5000);
};
Status.prototype.ensure = function () {
for (var type in StatusType) {
if (!this.states.has(StatusType[type]))
this.states.set(StatusType[type], {
state: State.Gray,
message: 'Loading...',
});
}
};
Status.prototype.doLog = function () {
console.clear();
this.states.forEach(function (state, key) {
console.log("[".concat(key, "] ").concat(state.state, " - ").concat(state.message));
});
};
return Status;
}());
exports.Status = Status;
var State;
(function (State) {
State["Green"] = "GREEN";
State["Yellow"] = "YELLOW";
State["Red"] = "RED";
State["Gray"] = "GRAY";
})(State || (exports.State = State = {}));
var StatusType;
(function (StatusType) {
StatusType["CameraPC"] = "CAMERAPC";
StatusType["CameraProcess"] = "CAMERAPROCESS";
StatusType["CameraUnityStream"] = "CAMERAUNITYSTREAM";
StatusType["UnityBuild"] = "UNITYBUILD";
StatusType["ReplayFunction"] = "REPLAYFUNCTION";
})(StatusType || (exports.StatusType = StatusType = {}));
//# sourceMappingURL=Status.js.map