rsxjs
Version:
Resilience Extensions for JS.
32 lines (31 loc) • 1.08 kB
TypeScript
/**
* @file src/pool/types.ts
* @copyright 2018-present Karim Alibhai. All rights reserved.
*/
export interface PoolOptions {
}
export declare type PoolOptionsGiven = Partial<PoolOptions>;
export declare function defaults(_?: PoolOptionsGiven): PoolOptions;
export interface Worker {
isAvailable(): boolean;
}
export declare function isWorkerAvailable<T extends Worker>(worker: T): boolean;
export declare class GenericPool<T extends Worker> {
private head?;
private tail?;
addWorker(worker: T): void;
getExistingWorker(): T | void;
}
export declare class SyncPool<T extends Worker> extends GenericPool<T> {
readonly it: Iterator<T>;
readonly options: PoolOptions;
constructor(it: Iterator<T>, options: PoolOptions);
getWorker(): T;
}
export declare class AsyncPool<T extends Worker> extends GenericPool<T> {
readonly it: AsyncIterator<T>;
readonly options: PoolOptions;
constructor(it: AsyncIterator<T>, options: PoolOptions);
getWorker(): Promise<T>;
}
export declare type Pool<T extends Worker> = SyncPool<T> | AsyncPool<T>;