1 |
|
2 |
|
3 | import { Duplex } from 'stream';
|
4 | import { Endpoint } from './types';
|
5 | export interface PeerOptions<Message> {
|
6 | readonly endpoint: Endpoint;
|
7 | readonly stream: Duplex;
|
8 | readonly transform: Duplex;
|
9 | readonly onError: (peer: Peer<Message>, error: Error) => void;
|
10 | readonly onClose: (peer: Peer<Message>) => void;
|
11 | }
|
12 | export declare abstract class Peer<Message> {
|
13 | readonly endpoint: Endpoint;
|
14 | private readonly stream;
|
15 | private readonly transform;
|
16 | private readonly buffer;
|
17 | private mutableConnected;
|
18 | private mutableConnecting;
|
19 | private mutableClosed;
|
20 | private readonly onErrorInternal;
|
21 | private readonly onCloseInternal;
|
22 | constructor(options: PeerOptions<Message>);
|
23 | readonly connected: boolean;
|
24 | connect(): Promise<void>;
|
25 | close(hadError?: boolean): void;
|
26 | write(buffer: Buffer): void;
|
27 | receiveMessage(timeoutMS?: number): Promise<Message>;
|
28 | streamData(onDataReceived: (data: Message) => void): {
|
29 | readonly unsubscribe: () => void;
|
30 | };
|
31 | protected abstract connectInternal(): Promise<void>;
|
32 | protected abstract closeInternal(hadError: boolean): void;
|
33 | protected onError(error: Error): void;
|
34 | private onClose;
|
35 | }
|