@comake/skl-js-engine
Version:
Standard Knowledge Language Javascript Engine
68 lines • 2 kB
JavaScript
;
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