UNPKG

@lodestar/beacon-node

Version:

A Typescript implementation of the beacon chain

37 lines 1.56 kB
import { MessagePort, Worker } from "node:worker_threads"; import { Thread } from "@chainsafe/threads"; import { Logger } from "@lodestar/logger"; import { Metrics } from "../metrics/metrics.js"; import { NetworkCoreWorkerMetrics } from "../network/core/metrics.js"; import { StrictEventEmitterSingleArg } from "./strictEvents.js"; export type WorkerBridgeEvent<EventData> = { type: string; event: keyof EventData; posted: [number, number]; data: EventData[keyof EventData]; }; export declare enum EventDirection { workerToMain = 0, mainToWorker = 1, /** Event not emitted through worker boundary */ none = 2 } /** * Bridges events from worker to main thread * Each event can only have one direction: * - worker to main * - main to worker */ export declare function wireEventsOnWorkerThread<EventData>(mainEventName: string, events: StrictEventEmitterSingleArg<EventData>, parentPort: MessagePort, metrics: NetworkCoreWorkerMetrics | null, isWorkerToMain: { [K in keyof EventData]: EventDirection; }): void; export declare function wireEventsOnMainThread<EventData>(mainEventName: string, events: StrictEventEmitterSingleArg<EventData>, worker: Pick<Worker, "on" | "postMessage">, metrics: Metrics | null, isWorkerToMain: { [K in keyof EventData]: EventDirection; }): void; export declare function terminateWorkerThread({ worker, retryMs, retryCount, logger, }: { worker: Thread; retryMs: number; retryCount: number; logger?: Logger; }): Promise<void>; //# sourceMappingURL=workerEvents.d.ts.map