/// import { Worker } from "cluster"; import { IProcessRequest, IProcessResponse } from ".."; export interface IWorkerMessage { event: string; processId: string; channel: string; data?: any; } export declare type WorkerListner = (processId: string, channel: string, data: any) => void; export declare type IMasterIPCMiddleware = (ipcm: IPCMaster, message: IWorkerMessage, next: () => void) => void; /** * IPC interface for master node */ export declare class IPCMaster { workers: { [pid: string]: Worker; }; subscribers: { [channel: string]: Set; }; listners: { [event: string]: WorkerListner; }; middlewares: IMasterIPCMiddleware[]; add(pid: string, worker: Worker): void; use(middleware: IMasterIPCMiddleware): void; nextMiddleware(index: number, message: IWorkerMessage): void; protected onMessage(message: IWorkerMessage): void; onSubscribe(processId: string, channel: string): void; onUnsubscribe(processId: string, channel: string): void; onPublish(processId: string, channel: string, data: IProcessRequest | IProcessResponse): void; }