UNPKG

@aptpod/iscp-ts

Version:

iSCP 2.0 client library for TypeScript

115 lines (114 loc) 4.61 kB
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; }