cs2inspects
Version:
openskindb inspect sdk with bulk processing capabilities
113 lines • 3.52 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.StatsManager = exports.statsManager = void 0;
exports.getServiceStats = getServiceStats;
exports.getSimpleStats = getSimpleStats;
exports.getHealthStatus = getHealthStatus;
exports.incrementRequestStats = incrementRequestStats;
const bulk_1 = require("./bulk");
class StatsManager {
startTime;
totalRequests = 0;
successfulRequests = 0;
workers = new Map();
constructor() {
this.startTime = Date.now();
}
incrementRequests(success = true) {
this.totalRequests++;
if (success) {
this.successfulRequests++;
}
}
addWorker(id) {
this.workers.set(id, {
id,
active: true,
processed: 0,
errors: 0,
lastActivity: Date.now(),
});
}
updateWorker(id, processed, error = false) {
const worker = this.workers.get(id);
if (worker) {
worker.lastActivity = Date.now();
if (processed) {
worker.processed++;
}
if (error) {
worker.errors++;
}
}
}
deactivateWorker(id) {
const worker = this.workers.get(id);
if (worker) {
worker.active = false;
}
}
removeWorker(id) {
this.workers.delete(id);
}
getStats() {
const queueStats = (0, bulk_1.getQueueStats)();
const uptime = Date.now() - this.startTime;
const successRate = this.totalRequests > 0
? (this.successfulRequests / this.totalRequests) * 100
: 100;
return {
queue: queueStats,
workers: Array.from(this.workers.values()),
uptime,
totalRequests: this.totalRequests,
successRate,
};
}
getSimpleStats() {
const stats = this.getStats();
return {
uptime: Math.floor(stats.uptime / 1000),
totalRequests: stats.totalRequests,
successRate: Math.round(stats.successRate * 100) / 100,
queueSize: stats.queue.size,
queueProcessed: stats.queue.processed,
queueErrors: stats.queue.errors,
averageProcessingTime: Math.round(stats.queue.averageProcessingTime),
activeWorkers: stats.workers.filter((w) => w.active).length,
totalWorkers: stats.workers.length,
};
}
getHealthStatus() {
const stats = this.getStats();
const isHealthy = stats.successRate > 90 && stats.queue.size < 80;
return {
status: isHealthy ? "healthy" : "degraded",
uptime: stats.uptime,
queueSize: stats.queue.size,
successRate: stats.successRate,
activeWorkers: stats.workers.filter((w) => w.active).length,
};
}
reset() {
this.startTime = Date.now();
this.totalRequests = 0;
this.successfulRequests = 0;
this.workers.clear();
}
}
exports.StatsManager = StatsManager;
exports.statsManager = new StatsManager();
function getServiceStats() {
return exports.statsManager.getStats();
}
function getSimpleStats() {
return exports.statsManager.getSimpleStats();
}
function getHealthStatus() {
return exports.statsManager.getHealthStatus();
}
function incrementRequestStats(success = true) {
exports.statsManager.incrementRequests(success);
}
//# sourceMappingURL=stats.js.map
;