UNPKG

data-channel-router

Version:
86 lines (85 loc) 3.34 kB
import { DataChannelSignalQuality, DataChannelStatuses } from "../enums"; import { DataChannelRouterEvents } from "../enums/DataChannelRouterEvents"; import { IDataChannelInfo, IDataChannelOptions, IDataChannelRouterOptions, IDataChannelsStats } from "../interfaces"; import { Id } from "../types"; import { EventEmitter } from "../utils"; import { DataChannelProxy } from "./DataChannelProxy"; type Events = typeof DataChannelRouterEvents.CHANNEL_CHANGE | typeof DataChannelRouterEvents.CHANNEL_UNAVAILABLE | typeof DataChannelRouterEvents.CHANNEL_RECOVERY | typeof DataChannelRouterEvents.PING_FAILURE | typeof DataChannelRouterEvents.ROUTE_ERROR | typeof DataChannelRouterEvents.CHANGE | typeof DataChannelRouterEvents.STATS | typeof DataChannelRouterEvents.BUFFERING; type OnChannelChangeListener = (channel: IDataChannelInfo) => void; type OnChannelUnavailableListener = (channel: IDataChannelInfo) => void; type OnChannelRecoveryListener = (channel: IDataChannelInfo) => void; type OnChangeListener = (channel: IDataChannelInfo | null) => void; type OnPingFailureListener = (channelId: Id) => void; type OnRouteErrorListener = (routeName: string, channelId: Id) => void; type OnStatsListener = (stats: IDataChannelsStats) => void; type OnBufferingListener = (bufferSize: number) => void; type Listeners = OnChannelChangeListener | OnChannelUnavailableListener | OnChannelRecoveryListener | OnChangeListener | OnPingFailureListener | OnRouteErrorListener | OnStatsListener | OnBufferingListener; /** * Data channel router * @link https://github.com/DjonnyX/data-channel-router/blob/main/library/src/components/DataChannelRouter.ts * @author Evgenii Grebennikov * @email djonnyx@gmail.com */ export declare class DataChannelRouter<R = any> extends EventEmitter<Events, Listeners> { private _channelsByPriority; private _pingThreadManager; private _routeThreadManager; /** * Returns true if there are data channels available. */ get isAvailable(): boolean; private _router; /** * Router */ get router(): R; private _stats; /** * Returns statistics for data channels */ get stats(): { [channelId: number]: { status: DataChannelStatuses; signal: DataChannelSignalQuality; }; [channelId: string]: { status: DataChannelStatuses; signal: DataChannelSignalQuality; }; }; /** * Returns the buffering value */ get buffering(): number; private _pingTimeout; private _pingTimeouts; private _activeChannel; /** * @internal */ get activeChannel(): DataChannelProxy; private _delayMap; private _onChannelConnectedHandler; private _onChannelIdleHandler; private _onChannelUnavailableHandler; private _onRouteThreadManagerBuffering; constructor(options: IDataChannelRouterOptions<R>); private createInitialChannels; private run; /** * Adds a new data channel */ add(channel: IDataChannelOptions): void; private changeDataChannel; private generateStats; private addChannelToMap; private pingChannel; private ping; private storeChannel; private selectFastestChannel; /** * Clears all data. Called before deletion. */ dispose(): void; } export {};