UNPKG

@jawis/shared-buffer-store

Version:

Store for variable sized buffers to use in concurrent programs.

49 lines (48 loc) 1.33 kB
import { ExclusiveKey, ReadWriteLock, ReadWriteLockDeps } from "^shared-lock"; export type MetaDataDeps = { sharedArray: Uint8Array; byteSize: number; direction: "left" | "right"; initialized?: boolean; } & Omit<ReadWriteLockDeps<any>, "type" | "sharedArray">; export declare const BUFFER_COUNT_OFFSET = 0; export declare const BYTE_USAGE_OFFSET: number; export declare const LOCK_OFFSET: number; export declare const META_DATA_LENGTH: number; export declare const META_DATA_BYTES: number; /** * * todo * - CUR_USAGE_OFFSET is the amount of used bytes. Not directly the same as the free pointer. * Just have the free pointer directly */ export declare class MetaData { deps: MetaDataDeps; lock: ReadWriteLock<"meta">; private metaDataBuffer; /** * */ constructor(deps: MetaDataDeps); /** * */ getCount: () => number; /** * */ incCount(key: ExclusiveKey<"meta">): void; /** * */ decCount(key: ExclusiveKey<"meta">): void; /** * Move the free pointer, so there is made the amount of space available. * */ tryMoveFreePointer: (amount: number, key: ExclusiveKey<"meta">) => number; /** * Returns the index of the free pointer */ getFreePointer: (key: ExclusiveKey<"meta">) => number; }