sabcom
Version:
A TypeScript/Node.js library for inter-thread communication using SharedArrayBuffer with atomic operations for raw buffer data transfer
34 lines (33 loc) • 1.3 kB
TypeScript
export declare const SEMAPHORE = 0;
export declare enum Semaphore {
READY = 0,
HANDSHAKE = 1,
PAYLOAD = 2
}
export declare enum Handshake {
TOTAL_SIZE = 1,
TOTAL_CHUNKS = 2
}
export declare enum Header {
CHUNK_INDEX = 1,
CHUNK_OFFSET = 2,
CHUNK_SIZE = 3
}
export declare const HEADER_VALUES: number;
export declare const HEADER_SIZE: number;
export interface Options {
timeout?: number;
}
export interface WaitRequest {
target: Int32Array;
index: number;
value: number;
timeout?: number;
}
export type WaitResponse = ReturnType<typeof Atomics.wait>;
export declare function writeGenerator(data: Uint8Array, buffer: SharedArrayBuffer, { timeout }?: Options): Generator<WaitRequest, void, WaitResponse>;
export declare function readGenerator(buffer: SharedArrayBuffer, { timeout }?: Options): Generator<WaitRequest, Uint8Array, WaitResponse>;
export declare const writeSync: (data: Uint8Array, buffer: SharedArrayBuffer, options?: Options) => void;
export declare const write: (data: Uint8Array, buffer: SharedArrayBuffer, options?: Options) => Promise<void>;
export declare const readSync: (buffer: SharedArrayBuffer, options?: Options) => Uint8Array;
export declare const read: (buffer: SharedArrayBuffer, options?: Options) => Promise<Uint8Array>;