Files
pixel.horse/src/ts/server/pool.ts
T
Eliot Partridge caf70a864f Revert codestyle changes (#40)
* Revert "7f7efbb94bab8574e42d942ad82d414e007b2970"

Code style changes should probably be part of a PR
2019-08-30 10:53:14 -05:00

31 lines
524 B
TypeScript

export interface Pool<T> {
create(): T;
dispose(value: T): boolean;
}
export function createPool<T>(count: number, createNew: () => T, reset: (value: T) => void): Pool<T> {
const pool: T[] = [];
const create = () => {
const existing = pool.pop();
if (existing) {
reset(existing);
return existing;
} else {
return createNew();
}
};
const dispose = (value: T) => {
if (pool.length < count) {
pool.push(value);
return true;
} else {
return false;
}
};
return { create, dispose };
}