refactor: move queueing code into its own directory
[poolifier.git] / src / queues / fixed-queue.ts
CommitLineData
840270a0 1import { AbstractFixedQueue } from './abstract-fixed-queue.js'
c6dd1aeb 2import type { IFixedQueue } from './queue-types.js'
097dea68
JB
3
4/**
5 * Fixed queue.
6 * @typeParam T - Type of fixed queue data.
7 * @internal
8 */
840270a0
JB
9export class FixedQueue<T>
10 extends AbstractFixedQueue<T>
11 implements IFixedQueue<T> {
097dea68
JB
12 /** @inheritdoc */
13 public enqueue (data: T, priority?: number): number {
14 if (this.full()) {
9008a966 15 throw new Error('Fixed queue is full')
097dea68
JB
16 }
17 let index = this.start + this.size
18 if (index >= this.capacity) {
19 index -= this.capacity
20 }
21 this.nodeArray[index] = { data, priority: priority ?? 0 }
22 return ++this.size
23 }
097dea68 24}