Files
server-manager/wrapper/src/statusReporter.js
T

50 lines
1.7 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.StatusReporter = void 0;
const os_1 = __importDefault(require("os"));
const config_1 = require("./config");
const logger_1 = require("./logger");
const logger = (0, logger_1.getLogger)("StatusReporter");
class StatusReporter {
constructor(channel, processManager, queryManager, wrapperId) {
this.channel = channel;
this.processManager = processManager;
this.queryManager = queryManager;
this.wrapperId = wrapperId;
}
start() {
logger.debug("Status Reporter gestartet");
setInterval(() => {
this.sendStatus();
}, config_1.WRAPPER_STATUS_INTERVAL);
}
sendStatus() {
const processes = this.processManager.getStatus();
const queries = this.queryManager.getStatus();
const servers = processes.map(server => {
const query = queries.find((q) => q.id === server.id);
return {
...server,
players: query?.players ?? 0,
maxPlayers: query?.maxPlayers ?? 0
};
});
const status = {
type: "wrapper.status",
wrapperId: this.wrapperId,
servers,
ramFree: Math.round(os_1.default.freemem()
/
1024
/
1024)
};
this.channel.sendToQueue("wrapper.register", Buffer.from(JSON.stringify(status)));
logger.debug("Status gesendet:", servers.length, "Server");
}
}
exports.StatusReporter = StatusReporter;