UNPKG

cs2inspects

Version:

openskindb inspect sdk with bulk processing capabilities

113 lines 3.52 kB
"use strict"; 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