UNPKG

typescript-dotnet-core

Version:

A the core classes and utilities of a JavaScript-Friendly .NET Based TypeScript Library.

55 lines (54 loc) 2.1 kB
/*! * @author electricessence / https://github.com/electricessence/ * Licensing: MIT https://github.com/electricessence/TypeScript.NET-Core/blob/master/LICENSE.md * Based upon ObjectPool from Parallel Extension Extras and other ObjectPool implementations. * Uses .add(T) and .take():T */ import DisposableBase from "./DisposableBase"; import IRecyclable from "./IRecyclable"; export declare class ObjectPool<T> extends DisposableBase { private readonly _generator?; private readonly _recycler?; private readonly _maxSize; private _toRecycle; private _pool; private _reduceTimeoutId; /** * A transient amount of object to exist over _maxSize until trim() is called. * But any added objects over _localAbsMaxSize will be disposed immediately. * @param _generator The delegate to create new items. * @param _recycler An optional delegate to clean/process items before returning to the pool. * @param _maxSize The soft ceiling by which the pool is trimmed. Default is 1000. */ constructor(_generator?: ((...args: any[]) => T) | undefined, _recycler?: ((o: T) => void) | undefined, _maxSize?: number); /** * The soft ceiling by which the pool is trimmed. * @returns {number} */ get maxSize(): number; /** * Current number of objects in the pool. * @returns {number} */ get count(): number; protected _recycle(): void; trim(max?: number): void; protected _cancelAutoTrim(): void; autoTrim(msLater?: number, max?: number): void; /** * Clears out the pool. */ clear(): void; toArrayAndClear(): T[]; /** * Shortcut for toArrayAndClear(); */ dump(): T[]; protected _onDispose(): void; give(entry: T): void; tryTake(): T | undefined; take(factory?: () => T): T; static create<T>(generator?: (...args: any[]) => T, recycler?: (o: T) => void, max?: number): ObjectPool<T>; static createAutoRecycled<T extends IRecyclable>(generator?: (...args: any[]) => T, max?: number): ObjectPool<T>; } export default ObjectPool;