redis-smq-common
Version:
Provides essential components and utilities shared across RedisSMQ packages.
31 lines • 1.36 kB
TypeScript
import { Worker as WorkerThread } from 'worker_threads';
import { ICallback } from '../async/index.js';
import { EventEmitter } from '../event/index.js';
import { ILogger } from '../logger/index.js';
import { EWorkerType, TWorkerThreadParentMessage } from './types/index.js';
export type TWorkerEvent = {
'worker.error': (err: Error) => void;
'worker.data': (payload: unknown) => void;
'worker.terminated': () => void;
};
export declare abstract class Worker<Reply> extends EventEmitter<TWorkerEvent> {
protected abstract readonly type: EWorkerType;
protected readonly id: `${string}-${string}-${string}-${string}-${string}`;
protected readonly workerFilename: string;
protected readonly initialPayload: unknown;
protected workerThread: WorkerThread | null;
private stdoutStream;
private stderrStream;
protected logger: ILogger;
private isShuttingDown;
protected constructor(workerFilename: string, initialPayload: unknown, logger: ILogger);
private cleanupStreams;
protected getWorkerThread(): WorkerThread;
private setupWorkerListeners;
protected postMessage(message: TWorkerThreadParentMessage, callback?: ICallback<Reply>): void;
shutdown(cb: ICallback): void;
private removeFromGlobalList;
getId(): string;
getWorkerFilename(): string;
}
//# sourceMappingURL=worker.d.ts.map