UNPKG

@comake/skl-js-engine

Version:

Standard Knowledge Language Javascript Engine

51 lines (50 loc) 1.76 kB
/// <reference types="node" /> import { EventEmitter } from 'node:events'; import { Logger } from '../../../logger'; import type { MessageHandler, Transport, TransportConfig, TransportEvents } from '../Transport'; import { TransportStatus } from '../Transport'; /** * Base transport class providing common functionality for all transport implementations */ export declare abstract class BaseTransport extends EventEmitter implements Transport { protected internalStatus: TransportStatus; protected messageHandler?: MessageHandler; protected name?: string; readonly logger: Logger; constructor(); /** * Set a name for this transport (used in logging) */ setName(name: string): void; /** * Get current transport status */ get status(): TransportStatus; /** * Register a message handler for incoming messages */ onMessage<T>(handler: MessageHandler<T>): void; /** * Register an event listener */ on<TKey extends keyof TransportEvents>(event: TKey, handler: TransportEvents[TKey]): this; /** * Remove an event listener */ off<TKey extends keyof TransportEvents>(event: TKey, handler: TransportEvents[TKey]): this; /** * Set transport status and emit event */ protected setStatus(status: TransportStatus): void; /** * Handle errors and emit error events */ handleError(error: Error, context?: string): void; /** * Abstract methods to be implemented by concrete transport classes */ abstract initialize(config?: TransportConfig): Promise<void>; abstract send<TRequest, TResponse>(message: TRequest): Promise<TResponse>; abstract close(): Promise<void>; abstract isReady(): boolean; }