///
import { Socket } from 'net';
import { ChildProcess } from 'child_process';
import { Message } from './messages';
import { Event } from './events';
export interface DataCallback {
(data: Message): void;
}
export interface PartialMessageInfo {
readonly messageToken: number;
readonly waitingTime: number;
}
export interface MessageReader {
readonly onError: Event;
readonly onClose: Event;
readonly onPartialMessage: Event;
listen(callback: DataCallback): void;
dispose(): void;
}
export declare namespace MessageReader {
function is(value: any): value is MessageReader;
}
export declare abstract class AbstractMessageReader {
private errorEmitter;
private closeEmitter;
private partialMessageEmitter;
constructor();
dispose(): void;
readonly onError: Event;
protected fireError(error: any): void;
readonly onClose: Event;
protected fireClose(): void;
readonly onPartialMessage: Event;
protected firePartialMessage(info: PartialMessageInfo): void;
private asError;
}
export declare class StreamMessageReader extends AbstractMessageReader implements MessageReader {
private readable;
private callback;
private buffer;
private nextMessageLength;
private messageToken;
private partialMessageTimer;
private _partialMessageTimeout;
constructor(readable: NodeJS.ReadableStream, encoding?: string);
partialMessageTimeout: number;
listen(callback: DataCallback): void;
private onData;
private clearPartialMessageTimer;
private setPartialMessageTimer;
}
export declare class IPCMessageReader extends AbstractMessageReader implements MessageReader {
private process;
constructor(process: NodeJS.Process | ChildProcess);
listen(callback: DataCallback): void;
}
export declare class SocketMessageReader extends StreamMessageReader {
constructor(socket: Socket, encoding?: string);
}