12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /// <reference types="node" />
- import { Socket } from "net";
- export type ProgressType = "upload" | "download" | "list";
- /**
- * Describes progress of file transfer.
- */
- export interface ProgressInfo {
- /** A name describing this info, e.g. the filename of the transfer. */
- readonly name: string;
- /** The type of transfer, typically "upload" or "download". */
- readonly type: ProgressType;
- /** Transferred bytes in current transfer. */
- readonly bytes: number;
- /** Transferred bytes since last counter reset. Useful for tracking multiple transfers. */
- readonly bytesOverall: number;
- }
- export type ProgressHandler = (info: ProgressInfo) => void;
- /**
- * Tracks progress of one socket data transfer at a time.
- */
- export declare class ProgressTracker {
- bytesOverall: number;
- protected readonly intervalMs = 500;
- protected onStop: (stopWithUpdate: boolean) => void;
- protected onHandle: ProgressHandler;
- /**
- * Register a new handler for progress info. Use `undefined` to disable reporting.
- */
- reportTo(onHandle?: ProgressHandler): void;
- /**
- * Start tracking transfer progress of a socket.
- *
- * @param socket The socket to observe.
- * @param name A name associated with this progress tracking, e.g. a filename.
- * @param type The type of the transfer, typically "upload" or "download".
- */
- start(socket: Socket, name: string, type: ProgressType): void;
- /**
- * Stop tracking transfer progress.
- */
- stop(): void;
- /**
- * Call the progress handler one more time, then stop tracking.
- */
- updateAndStop(): void;
- }
|