/// /// import { EventEmitter } from "events"; import { PeerId, PeerInfo } from "../PeerInfo"; import { Rtts } from "../../identifiers"; import { AbstractWsConnection } from './AbstractWsConnection'; export declare enum Event { PEER_CONNECTED = "streamr:peer:connect", PEER_DISCONNECTED = "streamr:peer:disconnect", MESSAGE_RECEIVED = "streamr:message-received", HIGH_BACK_PRESSURE = "streamr:high-back-pressure", LOW_BACK_PRESSURE = "streamr:low-back-pressure" } export declare enum DisconnectionCode { GRACEFUL_SHUTDOWN = 1000, FAILED_HANDSHAKE = 4000, DEAD_CONNECTION = 4001, DUPLICATE_SOCKET = 4002, INVALID_PROTOCOL_MESSAGE = 4003 } export declare enum DisconnectionReason { GRACEFUL_SHUTDOWN = "streamr:node:graceful-shutdown", DUPLICATE_SOCKET = "streamr:endpoint:duplicate-connection", NO_SHARED_STREAM_PARTS = "streamr:node:no-shared-stream-parts", DEAD_CONNECTION = "dead connection", INVALID_PROTOCOL_MESSAGE = "streamr:protocol:invalid-protocol-message" } export declare class UnknownPeerError extends Error { static CODE: string; readonly code: string; } export declare abstract class AbstractWsEndpoint extends EventEmitter { private readonly pingPongWs; private readonly connectionById; private stopped; protected handshakeTimeoutRefs: Record; protected readonly peerInfo: PeerInfo; protected readonly handshakeTimer: number; protected constructor(peerInfo: PeerInfo, pingInterval: number); send(recipientId: PeerId, message: string): Promise; close(recipientId: PeerId, code: DisconnectionCode, reason: DisconnectionReason): void; stop(): Promise; getRtts(): Rtts; getPeers(): ReadonlyMap; getPeerInfos(): PeerInfo[]; clearHandshake(id: PeerId): void; /** * Custom close logic of subclass */ protected abstract doClose(connection: C, code: DisconnectionCode, reason: DisconnectionReason): void; /** * Custom clean up logic of subclass */ protected abstract doStop(): Promise; /** * Implementer should invoke this whenever a new connection is formed */ protected onNewConnection(connection: C): void; /** * Implementer should invoke this whenever a message is received. */ protected onReceive(connection: AbstractWsConnection, message: string): void; /** * Implementer should invoke this whenever a connection is closed. */ protected onClose(connection: C, code: DisconnectionCode, reason: DisconnectionReason): void; protected getConnections(): C[]; protected getConnectionByPeerId(peerId: PeerId): C | undefined; private emitLowBackPressure; private emitHighBackPressure; }