UNPKG

@comake/skl-js-engine

Version:

Standard Knowledge Language Javascript Engine

68 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseTransport = void 0; const node_events_1 = require("node:events"); const logger_1 = require("../../../logger"); const Transport_1 = require("../Transport"); /** * Base transport class providing common functionality for all transport implementations */ class BaseTransport extends node_events_1.EventEmitter { constructor() { super(); this.internalStatus = Transport_1.TransportStatus.disconnected; this.logger = logger_1.Logger.getInstance(); } /** * Set a name for this transport (used in logging) */ setName(name) { this.name = name; this.logger.setMetadata({ name, transport: this.constructor.name }); } /** * Get current transport status */ get status() { return this.internalStatus; } /** * Register a message handler for incoming messages */ onMessage(handler) { this.messageHandler = handler; } /** * Register an event listener */ on(event, handler) { return super.on(event, handler); } /** * Remove an event listener */ off(event, handler) { return super.off(event, handler); } /** * Set transport status and emit event */ setStatus(status) { if (this.internalStatus !== status) { const previousStatus = this.internalStatus; this.internalStatus = status; this.logger.log(`Transport status changed: ${previousStatus} -> ${status}`); this.emit('statusChange', status); } } /** * Handle errors and emit error events */ handleError(error, context) { const errorMessage = context ? `${context}: ${error.message}` : error.message; this.logger.error(errorMessage, error); this.emit('error', error); } } exports.BaseTransport = BaseTransport; //# sourceMappingURL=BaseTransport.js.map