traffic-monitor-mqtt
Version:
Zentrales Traffic Monitoring via MQTT für Node.js Anwendungen
81 lines (80 loc) • 3.24 kB
JavaScript
;
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);