@aptpod/iscp-ts
Version:
iSCP 2.0 client library for TypeScript
160 lines (159 loc) • 5.62 kB
TypeScript
/**
* QoSを表します。
* @category Enum
* @enum
*/
export declare const QOS: {
/** 低信頼。 */
readonly UNRELIABLE: 1;
/** 高信頼。 */
readonly RELIABLE: 2;
/** 信頼性のあるトランスポートを利用する低信頼。 */
readonly PARTIAL: 3;
};
/**
* {@link QOS}の型です。
* @category Enum
*/
export type QoS = (typeof QOS)[keyof typeof QOS];
/**
* データポイントを表します。
*
* データポイントは、経過時間を付与されたバイナリデータです。 バイナリデータのことをペイロードと呼びます。
* @category Data ID and Data Point
*/
export declare class DataPoint {
/** 経過時間(ナノ秒)。 */
elapsedTime: bigint;
/** ペイロード。 */
payload: Uint8Array;
constructor(init: {
elapsedTime: DataPoint['elapsedTime'];
payload: DataPoint['payload'];
});
}
/**
* データポイントの、名称とデータ型を表す識別子です。
*
* おもに、ブローカーおよびノードでのデータの意味と型の特定、
* ダウンストリームフィルタにて指定された受信条件に各時系列データポイントが合致するかどうかの判定、などに使用されます。
*
* 特殊文字 ``/`` はセパレータです。名称や型の階層構造を表現することができます。
*
* @category Data ID and Data Point
*/
export declare class DataId {
/** 名称。 */
name: string;
/** 型。 */
type: string;
constructor(init: {
name: DataId['name'];
type: DataId['type'];
});
/**
* DataIdの文字列表現から{@link DataId}を生成します。
*/
static parse(dataId: string): DataId;
/**
* DataIdを文字列表現に変換します。
*/
toString(): string;
/**
* DataIdを再帰的に複製します。
*/
deepCopy(): DataId;
}
export type DataIdOrAlias = DataId | number;
/**
* ストリームチャンクの中のデータポイントをデータIDごとにまとめた集合です。
*/
export declare class DataPointGroup {
/** データIDまたはそのエイリアス */
dataIdOrAlias: DataIdOrAlias;
/** データポイントのリスト */
dataPoints: DataPoint[];
constructor(init: {
dataIdOrAlias: DataPointGroup['dataIdOrAlias'];
dataPoints: DataPointGroup['dataPoints'];
});
}
/**
* 受信するデータを指定するためのデータフィルタです。
*
* 名称や型の指定において階層構造を表現したいときには、特殊文字 ``/`` をセパレータとして使用することができます。
*
* 特殊文字 ``#`` はマルチレベルワイルドカードです。
*
* - フィルタが ``#`` のとき、 ``name`` はマッチします。
* - フィルタが ``#`` のとき、 ``group/name`` はマッチします。
* - フィルタが ``group/#`` のとき、 ``group/name`` はマッチします。
* - フィルタが ``group/#`` のとき、 ``group/sub-group/name`` はマッチします。
* - フィルタが ``group/#`` のとき、 ``other-group/name`` はマッチしません。
*
* 特殊文字 ``+`` は単一レベルワイルドカードです。
*
* - フィルタが ``+`` のとき、 ``name`` はマッチします。
* - フィルタが ``group/+`` のとき、 ``group/name`` はマッチします。
* - フィルタが ``group/+/name`` のとき、 ``group/sub-group/name`` はマッチします。
* - フィルタが ``group/+/name`` のとき、 ``group/other-group/name`` はマッチします。
* - フィルタが ``group/+/name`` のとき、 ``group/other-group/some-name`` はマッチしません。
*
* @category Downstream
*/
export declare class DataFilter {
/** 名称 */
name: string;
/** 型 */
type: string;
constructor(init: {
name: DataFilter['name'];
type: DataFilter['type'];
});
/**
* 全データ型、全データ名称を受信対象とするデータフィルタを取得します。
*/
static fullOpen(): DataFilter;
/**
* データフィルタの文字列表現から{@link DataFilter}を生成します。
*/
static parse(dataId: string): DataFilter;
/**
* データフィルタの文字列表現を取得します。
*/
toString(): string;
}
/**
* ダウンストリームフィルタを表します。
* @category Downstream
*/
export declare class DownstreamFilter {
/** 送信元ノードID。 */
sourceNodeId: string;
/** データフィルタのリスト。 */
dataFilters: DataFilter[];
constructor(init: {
sourceNodeId: DownstreamFilter['sourceNodeId'];
dataFilters: DownstreamFilter['dataFilters'];
});
/**
* 指定したノードが送信するすべてのデータを取得するフィルタです。
* @param sourceNodeId データ取得対象とする送信元ノード。
*/
static allFor(sourceNodeId: string): DownstreamFilter;
}
/**
* ストリームを時間で区切ったデータポイントのまとまりです。
*
* iSCPにおけるデータ伝送は、このチャンク単位で行われます。
*/
export declare class StreamChunk {
/** シーケンス番号 */
sequenceNumber: number;
/** データポイントグループのリスト */
dataPointGroups: DataPointGroup[];
constructor(init: {
sequenceNumber: number;
dataPointGroups: DataPointGroup[];
});
}