UNPKG

traffic-monitor-mqtt

Version:

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

81 lines (80 loc) 3.24 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TrafficMonitor = void 0; const mqtt_client_1 = require("./lib/mqtt-client"); const event_batcher_1 = require("./lib/event-batcher"); const mongodb_monitor_1 = require("./lib/monitors/mongodb-monitor"); const express_monitor_1 = require("./lib/monitors/express-monitor"); const custom_event_monitor_1 = require("./lib/monitors/custom-event-monitor"); const debug_1 = __importDefault(require("debug")); const log = (0, debug_1.default)('traffic-monitor:main'); class TrafficMonitor { constructor(config) { this.config = config; this.mqttHandler = new mqtt_client_1.MQTTHandler(config.mqtt); this.eventBatcher = new event_batcher_1.EventBatcher(this.mqttHandler, config.batchSize, config.batchIntervalMs); this.mongoMonitor = new mongodb_monitor_1.MongoDBMonitor(this.eventBatcher, config.client); this.customMonitor = new custom_event_monitor_1.CustomEventMonitor(this.eventBatcher, config.client); if (config.debug) { debug_1.default.enable('traffic-monitor:*'); } } async connect() { await this.mqttHandler.connect(); log('Traffic monitor initialized and connected'); } wrapMongoClient(mongoClient) { return this.mongoMonitor.wrapMongoClient(mongoClient); } expressMiddleware() { return (0, express_monitor_1.createExpressMiddleware)(this.eventBatcher, this.config.client); } /** * Registriert ein neues Custom Event */ registerCustomEvent(config) { this.customMonitor.registerEvent(config); } /** * Löst ein registriertes Custom Event aus */ async triggerCustomEvent(eventName, data, durationMs) { await this.customMonitor.triggerEvent(eventName, data, durationMs); } /** * Entfernt ein registriertes Custom Event */ unregisterCustomEvent(eventName) { this.customMonitor.unregisterEvent(eventName); } /** * Gibt alle registrierten Custom Events zurück */ getRegisteredCustomEvents() { return this.customMonitor.getRegisteredEvents(); } async disconnect() { this.eventBatcher.stop(); await this.mqttHandler.disconnect(); log('Traffic monitor disconnected'); } } exports.TrafficMonitor = TrafficMonitor; __exportStar(require("./lib/types"), exports);