@aptpod/iscp-ts
Version:
iSCP 2.0 client library for TypeScript
115 lines (114 loc) • 4.61 kB
TypeScript
import { Ticker } from './utils/ticker';
/**
* {@link FlushPolicy}.{@link FlushPolicy.intervalOrBufferSize}に指定するコンフィグです。
* @category Flush Policy
*/
export interface IntervalOnlyConfig {
/**
* フラッシュインターバル(秒)。
* @default {@link FlushPolicy}.{@link FlushPolicy.DEFAULT_INTERVAL}
*/
interval?: number;
}
/**
* {@link FlushPolicy}.{@link FlushPolicy.bufferSizeOnly}に指定するコンフィグです。
* @category Flush Policy
*/
export interface BufferSizeOnlyConfig {
/**
* バッファサイズ(Byte)。
* @default {@link FlushPolicy}.{@link FlushPolicy.DEFAULT_BUFFER_SIZE}
*/
bufferSize?: number;
}
/**
* {@link FlushPolicy}.{@link FlushPolicy.bufferSizeOnly}に指定するコンフィグです。
* @category Flush Policy
*/
export interface IntervalOrBufferSizeConfig {
/**
* フラッシュインターバル(秒)。
* @default {@link FlushPolicy}.{@link FlushPolicy.DEFAULT_INTERVAL}
*/
interval?: number;
/**
* バッファサイズ(Byte)。
* @default {@link FlushPolicy}.{@link FlushPolicy.DEFAULT_BUFFER_SIZE}
*/
bufferSize?: number;
}
export type FlushPolicyConfig = {
oneofKind: (typeof FlushPolicy.TYPE)['IMMEDIATELY'];
} | {
oneofKind: (typeof FlushPolicy.TYPE)['INTERVAL_ONLY'];
config: Required<IntervalOnlyConfig>;
} | {
oneofKind: (typeof FlushPolicy.TYPE)['BUFFER_SIZE_ONLY'];
config: Required<BufferSizeOnlyConfig>;
} | {
oneofKind: (typeof FlushPolicy.TYPE)['INTERVAL_OR_BUFFER_SIZE'];
config: Required<IntervalOrBufferSizeConfig>;
} | {
oneofKind: (typeof FlushPolicy.TYPE)['NO_FLUSH'];
};
/**
* Upstreamのフラッシュの方法について定義します。
* @category Flush Policy
*/
export declare class FlushPolicy {
#private;
/** バッファサイズのデフォルト値です(Byte)。*/
static readonly DEFAULT_BUFFER_SIZE = 100000;
/** インターバルのデフォルト値です(秒)。*/
static readonly DEFAULT_INTERVAL = 1;
/**
* @internal
*/
static TYPE: {
readonly IMMEDIATELY: "Immediately";
readonly INTERVAL_ONLY: "IntervalOnly";
readonly BUFFER_SIZE_ONLY: "BufferSizeOnly";
readonly INTERVAL_OR_BUFFER_SIZE: "IntervalOrBufferSize";
readonly NO_FLUSH: "NoFlush";
};
/**
* 即時フラッシュを行う{@link FlushPolicy}を作成します。
*/
static immediately(): FlushPolicy;
/**
* インターバルによるフラッシュを行う{@link FlushPolicy}を作成します。
* @param interval フラッシュインターバル(秒)。引数を省略、または `undefined` を指定した時は、{@link FlushPolicy}.{@link FlushPolicy.DEFAULT_INTERVAL}が使用されます。
*/
static intervalOnly(interval?: number): FlushPolicy;
/**
* バッファサイズによるフラッシュを行う{@link FlushPolicy}を作成します。
* @param bufferSize バッファサイズ(Byte)。引数を省略、または `undefined` を指定した時は、{@link FlushPolicy}.{@link FlushPolicy.DEFAULT_BUFFER_SIZE}が使用されます。
*/
static bufferSizeOnly(bufferSize?: number): FlushPolicy;
/**
* インターバル、またはバッファサイズによるフラッシュを行う{@link FlushPolicy}を作成します。
* @param interval フラッシュインターバル(秒)。 引数を省略、または `undefined` を指定した時は、{@link FlushPolicy}.{@link FlushPolicy.DEFAULT_INTERVAL}が使用されます。
* @param bufferSize バッファサイズ(Byte)。引数を省略、または `undefined` を指定した時は、{@link FlushPolicy}.{@link FlushPolicy.DEFAULT_BUFFER_SIZE}が使用されます。
*/
static intervalOrBufferSize(interval?: number, bufferSize?: number): FlushPolicy;
/**
* フラッシュを行わない{@link FlushPolicy}を作成します。
* このFlushPolicyを指定した場合は、明示的にフラッシュを行う必要があります。
*/
static noFlush(): FlushPolicy;
/**
* @internal
*/
constructor(config: FlushPolicyConfig);
/**
* @hidden
*/
getConfig(): FlushPolicyConfig;
}
/**
* @internal
*/
export declare class FlushPolicyHelper {
static isFlush(flushPolicy: FlushPolicy, bufferSize: number): boolean;
static ticker(flushPolicy: FlushPolicy, signal: AbortSignal): ReturnType<(typeof Ticker)['of']> | undefined;
}