///
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;
}