@cross-border-bridge/data-channel
Version:
DataChannel for Web application
70 lines (69 loc) • 2.77 kB
TypeScript
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();
}