UNPKG

z-ipc

Version:

Z-IPC is an easy-to-use, extensible and fully type-safe IPC solution for JavaScript environments.

49 lines (46 loc) 1.13 kB
// src/adapters/worker-threads.ts import { parentPort } from "worker_threads"; // src/core/adapter.ts function defineAdapter(adapter) { return adapter; } // src/adapters/worker-threads.ts function ensureParentPortOpen(parentPort2) { if (parentPort2) { return; } throw new Error("parentPort is not available"); } function createWorkerThreadAdapter(worker) { return defineAdapter({ publish: (message) => { worker.postMessage(message); }, subscribe: (callback) => { worker.on("message", callback); }, unsubscribe: (callback) => { worker.off("message", callback); } }); } function createParentThreadAdapter() { return defineAdapter({ publish: (message) => { ensureParentPortOpen(parentPort); parentPort.postMessage(message); }, subscribe: (callback) => { ensureParentPortOpen(parentPort); parentPort.on("message", callback); }, unsubscribe: (callback) => { ensureParentPortOpen(parentPort); parentPort.off("message", callback); } }); } export { createParentThreadAdapter, createWorkerThreadAdapter };