nerdbank-streams
Version:
Multiplexing of streams
89 lines (88 loc) • 4.46 kB
TypeScript
import { OfferParameters } from './OfferParameters';
import { AcceptanceParameters } from './AcceptanceParameters';
import CancellationToken from 'cancellationtoken';
import { FrameHeader } from './FrameHeader';
import { ControlCode } from './ControlCode';
export interface Version {
major: number;
minor: number;
}
export interface HandshakeResult {
isOdd?: boolean;
protocolVersion: Version;
}
export declare abstract class MultiplexingStreamFormatter {
isOdd?: boolean;
abstract writeHandshakeAsync(): Promise<Buffer | null>;
abstract readHandshakeAsync(writeHandshakeResult: Buffer | null, cancellationToken: CancellationToken): Promise<HandshakeResult>;
abstract writeFrameAsync(header: FrameHeader, payload?: Buffer): Promise<void>;
abstract readFrameAsync(cancellationToken: CancellationToken): Promise<{
header: FrameHeader;
payload: Buffer;
} | null>;
abstract serializeOfferParameters(offer: OfferParameters): Buffer;
abstract deserializeOfferParameters(payload: Buffer): OfferParameters;
abstract serializeAcceptanceParameters(acceptance: AcceptanceParameters): Buffer;
abstract deserializeAcceptanceParameters(payload: Buffer): AcceptanceParameters;
abstract serializeContentProcessed(bytesProcessed: number): Buffer;
abstract deserializeContentProcessed(payload: Buffer): number;
abstract end(): void;
protected static getIsOddRandomData(): Buffer;
protected static isOdd(localRandom: Buffer, remoteRandom: Buffer): boolean;
protected createFrameHeader(code: ControlCode, id: number | undefined): FrameHeader;
}
export declare class MultiplexingStreamV1Formatter extends MultiplexingStreamFormatter {
private readonly stream;
/**
* The magic number to send at the start of communication when using v1 of the protocol.
*/
private static readonly protocolMagicNumber;
constructor(stream: NodeJS.ReadWriteStream);
end(): void;
writeHandshakeAsync(): Promise<Buffer>;
readHandshakeAsync(writeHandshakeResult: Buffer, cancellationToken: CancellationToken): Promise<HandshakeResult>;
writeFrameAsync(header: FrameHeader, payload?: Buffer): Promise<void>;
readFrameAsync(cancellationToken: CancellationToken): Promise<{
header: FrameHeader;
payload: Buffer;
} | null>;
serializeOfferParameters(offer: OfferParameters): Buffer;
deserializeOfferParameters(payload: Buffer): OfferParameters;
serializeAcceptanceParameters(_: AcceptanceParameters): Buffer;
deserializeAcceptanceParameters(_: Buffer): AcceptanceParameters;
serializeContentProcessed(bytesProcessed: number): Buffer;
deserializeContentProcessed(payload: Buffer): number;
}
export declare class MultiplexingStreamV2Formatter extends MultiplexingStreamFormatter {
private static readonly protocolVersion;
private readonly reader;
protected readonly writer: NodeJS.WritableStream;
constructor(stream: NodeJS.ReadWriteStream);
end(): void;
writeHandshakeAsync(): Promise<Buffer | null>;
readHandshakeAsync(writeHandshakeResult: Buffer | null, cancellationToken: CancellationToken): Promise<HandshakeResult>;
writeFrameAsync(header: FrameHeader, payload?: Buffer): Promise<void>;
readFrameAsync(cancellationToken: CancellationToken): Promise<{
header: FrameHeader;
payload: Buffer;
} | null>;
serializeOfferParameters(offer: OfferParameters): Buffer;
deserializeOfferParameters(payload: Buffer): OfferParameters;
serializeAcceptanceParameters(acceptance: AcceptanceParameters): Buffer;
deserializeAcceptanceParameters(payload: Buffer): AcceptanceParameters;
serializeContentProcessed(bytesProcessed: number): Buffer;
deserializeContentProcessed(payload: Buffer): number;
serializeException(error: Error | null): Buffer;
deserializeException(payload: Buffer): Error | null;
protected readMessagePackAsync(cancellationToken: CancellationToken): Promise<{} | [] | null>;
}
export declare class MultiplexingStreamV3Formatter extends MultiplexingStreamV2Formatter {
private static readonly protocolV3Version;
writeHandshakeAsync(): Promise<null>;
readHandshakeAsync(): Promise<HandshakeResult>;
writeFrameAsync(header: FrameHeader, payload?: Buffer): Promise<void>;
readFrameAsync(cancellationToken: CancellationToken): Promise<{
header: FrameHeader;
payload: Buffer;
} | null>;
}