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
JavaScript
// 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
};