/// /// /// import { Buffer } from 'buffer'; import { Socket } from 'net'; import { Readable, Writable, Duplex } from 'stream'; import { Emitter, Event, Disposable } from 'vscode-jsonrpc'; import { CancellationToken } from './util/cancellation'; /** * Stream interface used by the SSH library. Implementations of this interface * allow the SSH protocol to communicate over different transport mechanisms. */ export interface Stream extends Disposable { /** * Reads bytes from the stream. * @param count Maximum number of bytes to read. * @param cancellation Optional cancellation token. * @returns Buffer containing the bytes read, or null if the end of the * (cleanly closed) stream was reached. The buffer length is less than or * equal to the requested count. * @throws If there was an error reading from the stream. */ read(count: number, cancellation?: CancellationToken): Promise; /** * Writes bytes to the stream. * @param data Buffer containing bytes to write. * @param cancellation Optional cancellation token. * @throws If there was an error writing to the stream. */ write(data: Buffer, cancellation?: CancellationToken): Promise; /** * Closes the stream. * @param error Error that caused the stream closure, if any. */ close(error?: Error, cancellation?: CancellationToken): Promise; /** * Event raised when the stream was closed. * @param error Error that caused the stream closure, if any. */ readonly closed: Event<{ error?: Error; }>; /** * Gets a value indicating whether the stream is disposed. */ readonly isDisposed: boolean; } /** * Base class for stream adapters. */ export declare abstract class BaseStream implements Stream { private readonly incomingData; private readonly pendingReads; private error; protected disposed: boolean; protected onData(data: Buffer): void; protected onEnd(): void; protected onError(error: Error): void; read(count: number, cancellation?: CancellationToken): Promise; abstract write(data: Buffer, cancellation?: CancellationToken): Promise; abstract close(error?: Error, cancellation?: CancellationToken): Promise; protected readonly closedEmitter: Emitter<{ error?: Error | undefined; }>; readonly closed: Event<{ error?: Error; }>; dispose(): void; protected fireOnClose(error?: Error): void; get isDisposed(): boolean; } /** * Stream adapter for a Node.js Socket, Duplex stream, or Readable/Writable stream pair. */ export declare class NodeStream extends BaseStream { private readonly readStream; private readonly writeStream; constructor(duplexStream: Duplex | Socket); constructor(readStream: Readable, writeStream: Writable); write(data: Buffer, cancellation?: CancellationToken): Promise; close(error?: Error, cancellation?: CancellationToken): Promise; dispose(): void; } interface WebSocketLike { readonly protocol?: string; onmessage: ((e: { data: ArrayBuffer; }) => void) | null; onclose: ((e: { code: number; reason: string; wasClean: boolean; }) => void) | null; send(data: ArrayBuffer): void; close(code?: number, reason?: string): void; } /** * Stream adapter for a browser websocket. */ export declare class WebSocketStream extends BaseStream { private readonly websocket; constructor(websocket: WebSocket | WebSocketLike); get protocol(): string | undefined; write(data: Buffer, cancellation?: CancellationToken): Promise; close(error?: Error, cancellation?: CancellationToken): Promise; dispose(): void; } export {}; //# sourceMappingURL=streams.d.ts.map