UNPKG

1.26 kBTypeScriptView Raw
1/// <reference types="node" />
2/// <reference types="pouchdb-core" />
3import { Duplex } from 'stream';
4import { Endpoint } from './types';
5export 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}
12export 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}