fix RingBuffer naming 'final'
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
import { expect, test } from "vitest";
|
import { expect, test } from "vitest";
|
||||||
import { claim, createRingBuffer } from "./RingBuffer.ts";
|
import { claim, createRingBuffer, type RingBuffer } from "./RingBuffer.ts";
|
||||||
|
|
||||||
test("RingBuffer", () => {
|
test("RingBuffer", () => {
|
||||||
expect(() => createRingBuffer(3, () => ({}))).toThrow(
|
expect(() => createRingBuffer(3, () => ({}))).toThrow(
|
||||||
"size must be a power of two",
|
"size must be a power of two",
|
||||||
);
|
);
|
||||||
|
|
||||||
const ring = createRingBuffer(4, () => ({}));
|
const ring: RingBuffer<object> = createRingBuffer(4, () => ({}));
|
||||||
|
|
||||||
expect(ring.size).toBe(4);
|
expect(ring.size).toBe(4);
|
||||||
expect(ring.cursor).toBe(0);
|
expect(ring.cursor).toBe(0);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
export type Pooled<T> = {
|
export type RingBuffer<T> = {
|
||||||
size: number;
|
size: number;
|
||||||
mask: number;
|
mask: number;
|
||||||
cursor: number;
|
cursor: number;
|
||||||
@@ -8,7 +8,7 @@ export type Pooled<T> = {
|
|||||||
export function createRingBuffer<T extends object>(
|
export function createRingBuffer<T extends object>(
|
||||||
size: number,
|
size: number,
|
||||||
create: () => T,
|
create: () => T,
|
||||||
): Pooled<T> {
|
): RingBuffer<T> {
|
||||||
if ((size & (size - 1)) !== 0) {
|
if ((size & (size - 1)) !== 0) {
|
||||||
throw new Error("size must be a power of two");
|
throw new Error("size must be a power of two");
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ export function createRingBuffer<T extends object>(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function claim<T>(ring: Pooled<T>): T {
|
export function claim<T>(ring: RingBuffer<T>): T {
|
||||||
const slot = ring.buffer[ring.cursor];
|
const slot = ring.buffer[ring.cursor];
|
||||||
ring.cursor = (ring.cursor + 1) & ring.mask;
|
ring.cursor = (ring.cursor + 1) & ring.mask;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user