@jawis/shared-buffer-store
Version:
Store for variable sized buffers to use in concurrent programs.
49 lines (48 loc) • 1.33 kB
TypeScript
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;
}