UNPKG

redis-smq-common

Version:

Provides essential components and utilities shared across RedisSMQ packages.

50 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleRunnableWorker = handleRunnableWorker; const index_js_1 = require("../types/index.js"); const worker_thread_message_js_1 = require("./worker-thread-message.js"); function isWorkerClass(Worker) { return Worker.prototype && typeof Worker.prototype.constructor === 'function'; } function handleRunnableWorker(Worker, messagePort, initialPayload) { let instance = null; try { if (isWorkerClass(Worker)) instance = new Worker(initialPayload); else instance = Worker(initialPayload); } catch (err) { (0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.INVALID_WORKER_TYPE, err); } if (!instance || typeof instance !== 'object' || !instance.run || !instance.shutdown) { (0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.INVALID_WORKER_TYPE); } else { const run = () => { try { instance.run((err) => { if (err) (0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExecutionCode.PROCESSING_ERROR, err); }); } catch (err) { (0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExecutionCode.PROCESSING_CAUGHT_ERROR, err); } }; const shutdown = () => { instance.shutdown(() => void 0); }; const onMessage = (message) => { if (message.type === index_js_1.EWorkerThreadParentMessage.RUN) run(); if (message.type === index_js_1.EWorkerThreadParentMessage.SHUTDOWN) shutdown(); }; messagePort.on('message', onMessage); } } //# sourceMappingURL=runnable-worker-thread.js.map