UNPKG

@cross-border-bridge/data-channel

Version:
70 lines (69 loc) 2.77 kB
import { DataBus } from '@cross-border-bridge/data-bus'; /** * DataChannel内部エラー */ export declare class DataChannelError extends Error { /** * エラータイプ。以下の文字列が入る * - Unspecified : 不明なエラー * - Timeout : メッセージがタイムアウトした * - Closed : メッセージのレスポンスを受け取る前にDataChannelがクローズした */ type: string; } export declare type DataChannelCallback = (error: DataChannelError, packet: any) => void; export declare type DataChannelResponseCallback = (packet: any) => void; export declare type DataChannelHandler = (packet: any, callback?: DataChannelResponseCallback) => boolean | void; /** * DataBus上で単純なリクエスト&レスポンス機構を提供する。 */ export declare class DataChannel { private _identifier; private _dataBus; private _handler; private _handlers; private _tagCount; private _waitingCallbacks; private _timeoutObjects; constructor(dataBus: DataBus); /** * DataChannelを破棄する際に実行する。 * このメソッドを実行するとすべてのハンドラが解放され、レスポンス待ちの処理についてはエラーが返る。 */ destroy(): void; /** * このDataChannelが既に破棄されたかどうかを返す * * @return 破棄されていればtrue、されていなければfalse */ destroyed(): boolean; /** * メッセージハンドラの登録を行う * * @param handler メッセージ受信時に実行されるハンドラ * @return ハンドラID */ addHandler(handler: DataChannelHandler): void; /** * メッセージハンドラの解除を行う * * @param handlerId ハンドラ登録時に取得したハンドラID */ removeHandler(handler: DataChannelHandler): void; /** * 登録されているすべてのメッセージハンドラの解除を行う */ removeAllHandlers(): void; /** * メッセージの送信を行う。 * * @param packet メッセージの実データ。フォーマットによって内容は自由に定義できる * @param callback メッセージに対してのレスポンスを受け取るコールバック。任意指定 * @param timeout レスポンスを待つ待機時間。待機時間を過ぎるとcallbackにtimeoutエラーが返る。未指定時はタイムアウトしない。 */ send(packet: any, callback: DataChannelCallback, timeout?: number): void; private register(); private unregister(); private processCallback(targetTag, error, packet?); private acquireTag(); }