UNPKG

redis-smq-common

Version:

RedisSMQ Common Library provides many components that are mainly used by RedisSMQ and RedisSMQ Monitor.

51 lines 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WorkerCallable = void 0; const index_js_1 = require("./errors/index.js"); const index_js_2 = require("./types/index.js"); const worker_js_1 = require("./worker.js"); class WorkerCallable extends worker_js_1.Worker { constructor(workerFilename, logger) { super(workerFilename); this.type = index_js_2.EWorkerType.CALLABLE; this.logger = logger !== null && logger !== void 0 ? logger : this.logger; this.logger.info(`WorkerCallable instance created for ${workerFilename}`); this.logger.debug('WorkerCallable initialization details', { id: this.id, type: index_js_2.EWorkerType[this.type], hasCustomLogger: !!logger, }); } call(payload, cb) { this.logger.info(`Calling worker ${this.id}`); this.logger.debug('Call details', { hasPayload: payload !== null && payload !== undefined, payloadType: payload !== null && payload !== undefined ? typeof payload : 'null/undefined', }); if (payload === null || payload === undefined) { this.logger.error('Worker call failed: payload is required'); cb(new index_js_1.WorkerPayloadRequiredError()); } else { try { this.logger.debug('Registering worker thread event handlers'); this.registerEvents(cb); this.logger.debug('Posting CALL message to worker thread'); this.postMessage({ type: index_js_2.EWorkerThreadParentMessage.CALL, payload }); this.logger.debug('Worker call initiated successfully'); } catch (err) { const error = err instanceof Error ? err : new Error('Unknown error'); this.logger.error(`Worker call failed: ${error.message}`, { error: error.message, stack: error.stack, }); cb(error); } } } } exports.WorkerCallable = WorkerCallable; //# sourceMappingURL=worker-callable.js.map