120 lines
4.6 KiB
JavaScript
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
|