UNPKG

traffic-monitor-mqtt

Version:

Zentrales Traffic Monitoring via MQTT für Node.js Anwendungen

74 lines (73 loc) 2.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomEventMonitor = void 0; const debug_1 = __importDefault(require("debug")); const log = (0, debug_1.default)('traffic-monitor:custom-event'); class CustomEventMonitor { constructor(eventBatcher, clientConfig) { this.eventBatcher = eventBatcher; this.clientConfig = clientConfig; this.events = new Map(); } /** * Registriert ein neues Custom Event */ registerEvent(config) { if (this.events.has(config.name)) { throw new Error(`Event mit dem Namen ${config.name} existiert bereits`); } this.events.set(config.name, config); log(`Neues Custom Event registriert: ${config.name}`); } /** * Löst ein registriertes Event aus */ async triggerEvent(eventName, data, durationMs) { const eventConfig = this.events.get(eventName); if (!eventConfig) { throw new Error(`Event ${eventName} wurde nicht gefunden`); } const event = { timestamp: new Date().toISOString(), clientInfo: { name: this.clientConfig.name, environment: this.clientConfig.environment, hostname: this.clientConfig.hostname }, operationType: `custom:${eventConfig.category}`, targetSystem: eventConfig.targetSystem || 'custom', performance: { executionTimeMs: durationMs || 0, payloadSizeBytes: data ? JSON.stringify(data).length : 0 }, details: { eventName: eventConfig.name, description: eventConfig.description, tags: eventConfig.tags, data } }; await this.eventBatcher.addEvent(event); log(`Event ausgelöst: ${eventName}`); } /** * Entfernt ein registriertes Event */ unregisterEvent(eventName) { if (!this.events.has(eventName)) { throw new Error(`Event ${eventName} wurde nicht gefunden`); } this.events.delete(eventName); log(`Event entfernt: ${eventName}`); } /** * Gibt alle registrierten Events zurück */ getRegisteredEvents() { return Array.from(this.events.values()); } } exports.CustomEventMonitor = CustomEventMonitor;