snowflakify
Version:
The most complete Snowflake ID generator in TypeScript
29 lines (28 loc) • 883 B
TypeScript
import { SnowflakifyOptions } from '../@types';
export default class CircularBuffer {
private readonly bufferSize;
private readonly indexBitMask;
private readonly thresholdIndex;
private readonly tailTA;
private readonly headTA;
private readonly bufferTA;
private readonly bufferRefiller;
private readonly semaphoreTA;
constructor(bufferSize: number, generatorOptions: SnowflakifyOptions, refillTheshold?: number, workerCount?: number);
get size(): number;
get tail(): number;
private set tail(value);
get head(): number;
private set head(value);
get buffer(): BigInt64Array;
push(value: bigint): void;
pop(): bigint;
isFull(): boolean;
isEmpty(): boolean;
private incrementTail;
private incrementHead;
private static distance;
private nextIndex;
private acquire;
private release;
}