redis-smq-common
Version:
RedisSMQ Common Library provides many components that are mainly used by RedisSMQ and RedisSMQ Monitor.
51 lines • 2.18 kB
JavaScript
;
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