UNPKG

fast-worker-channel

Version:

High-performance communication channels for Node.js worker threads

32 lines 1.31 kB
import { Worker } from 'worker_threads'; interface Endpoint { readonly inboundBuffer: SharedArrayBuffer; } interface Producer<T> extends Endpoint { readonly outboundBuffer: SharedArrayBuffer; send(msg: T): void; close(): void; } interface Consumer<T> extends Endpoint { receive(): AsyncGenerator<T, void, unknown>; } interface ProducerConsumer<T, R> extends Producer<T>, Consumer<R> { } interface UnidirectionalChannel<T> { producer: Producer<T>; consumer: Consumer<T>; } interface BidirectionalChannel<T, R> { producer: ProducerConsumer<T, R>; consumer: ProducerConsumer<R, T>; } export declare class Channel { static createUnidirectional<T>(bufferSize?: number): UnidirectionalChannel<T>; static createBidirectional<T, R = T>(bufferSize?: number): BidirectionalChannel<T, R>; static adoptConsumer<T>(inbound: SharedArrayBuffer): Consumer<T>; static adoptProducerConsumer<T, R>(inbound: SharedArrayBuffer, outbound: SharedArrayBuffer): ProducerConsumer<T, R>; } export declare function handshake<T>(type: 'unidirectional', worker: Worker, consumer: Consumer<T>): Promise<void>; export declare function handshake<T, R>(type: 'bidirectional', worker: Worker, producerConsumer: ProducerConsumer<T, R>): Promise<void>; export {}; //# sourceMappingURL=port.d.ts.map