/// /// import * as net from 'net'; import { Observable, Subject } from "rxjs"; import { Bitstream } from "../util"; import { Message, MessageData } from "./syntax"; export interface ChunkStreamState { timestamp?: number; timestampDelta?: number; messageLength?: number; messageTypeId?: number; messageStreamId?: number; messagePayload?: Buffer; } export declare type HandshakeState = 'uninitialized' | 'versionSent' | 'ackSent' | 'handshakeDone'; export declare class ChunkStreamWriter { private bitstream; constructor(bitstream: Bitstream); maxChunkSize: number; windowSize: number; limitType: number; messageStreamId: number; timestamp: number; messageLength: number; messageTypeId: number; pendingMessages: Map; streamStates: Map; private getQueueForStream; private getStateForStream; private discardMessageFromQueue; send(message: ChunkMessage): void; setChunkSize(chunkSize: number): void; abortMessage(chunkStreamId: number): void; setAcknowledgementWindow(acknowledgementWindowSize: number): void; setPeerBandwidth(acknowledgementWindowSize: number, limitType: 'hard' | 'soft' | 'dynamic'): void; acknowledge(sequenceNumber: number): void; private write; private writeTimeout; } export declare class ChunkStreamSession { #private; readonly bitstream: Bitstream; constructor(bitstream: Bitstream); readonly reader: ChunkStreamReader; readonly writer: ChunkStreamWriter; get messageReceived(): Subject; private receiveMessage; send(message: ChunkMessage): void; setAcknowledgementWindow(acknowledgementWindowSize: number): void; setPeerBandwidth(acknowledgementWindowSize: number, limitType: 'soft' | 'hard' | 'dynamic'): void; setChunkSize(chunkSize: number): void; static forSocket(socket: net.Socket): ChunkStreamSession; } export interface ChunkMessage { chunkStreamId: number; messageStreamId: number; messageTypeId: number; timestamp: number; /** * The message to send. */ data: MessageData; buffer?: Buffer; bytesSent?: number; forceFullHeader?: boolean; } export declare class ChunkStreamReader { #private; private bitstream; constructor(bitstream: Bitstream); maxChunkSize: number; chunkStreams: Map; sequenceNumber: number; windowSize: number; clientVersion: number; expectsExtendedTimestamp: boolean; get messageReceived(): Observable; get controlMessageReceived(): Observable; get acknowledgements(): Observable; private start; private handshake; private getChunkStream; private dispatchMessage; private handleControlMessage; private parseMessageData; private receiveChunk; }