@minimaltech/node-infra
Version:
Minimal Technology NodeJS Infrastructure - Loopback 4 Framework
68 lines • 3.18 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseWorkerBusHelper = exports.AbstractWorkerBusHelper = exports.BaseWorkerMessageBusHandlerHelper = exports.AbstractWorkerMessageBusHandlerHelper = void 0;
const base_helper_1 = require("../../base/base.helper");
// -------------------------------------------------------------------------------------------
class AbstractWorkerMessageBusHandlerHelper extends base_helper_1.BaseHelper {
}
exports.AbstractWorkerMessageBusHandlerHelper = AbstractWorkerMessageBusHandlerHelper;
// -------------------------------------------------------------------------------------------
class BaseWorkerMessageBusHandlerHelper extends AbstractWorkerMessageBusHandlerHelper {
constructor(opts) {
super({ scope: opts.scope, identifier: opts.scope });
this.onMessage = opts.onMessage;
this.onClose = (opts === null || opts === void 0 ? void 0 : opts.onClose) ? opts.onClose : () => { };
this.onExit = (opts === null || opts === void 0 ? void 0 : opts.onExit)
? opts.onExit
: (_opts) => {
this.logger.warn('[onExit] worker EXITED | exitCode: %s', _opts.exitCode);
};
this.onError = (opts === null || opts === void 0 ? void 0 : opts.onError)
? opts.onError
: (_opts) => {
this.logger.error('[onError] worker error: %s', _opts.error);
};
}
}
exports.BaseWorkerMessageBusHandlerHelper = BaseWorkerMessageBusHandlerHelper;
// -------------------------------------------------------------------------------------------
class AbstractWorkerBusHelper extends base_helper_1.BaseHelper {
}
exports.AbstractWorkerBusHelper = AbstractWorkerBusHelper;
// -------------------------------------------------------------------------------------------
class BaseWorkerBusHelper extends AbstractWorkerBusHelper {
constructor(opts) {
super({ scope: opts.scope, identifier: opts.scope });
// Initialize
this.port = opts.port;
this.handler = opts.busHandler;
// Binding events
this.port.on('message', message => {
this.handler.onMessage({ message });
});
this.port.on('error', error => {
this.handler.onError({ error });
});
this.port.on('messageerror', error => {
this.handler.onError({ error });
});
this.port.on('exit', exitCode => {
this.handler.onExit({ exitCode });
});
this.port.on('close', () => {
this.handler.onClose();
});
}
postMessage(opts) {
var _a, _b;
if (!this.port) {
this.logger.error('[postMessage] Failed to post message to main | Invalid parentPort!');
return;
}
(_a = this.onBeforePostMessage) === null || _a === void 0 ? void 0 : _a.call(this, opts);
this.port.postMessage(opts.message, opts.transferList);
(_b = this.onAfterPostMessage) === null || _b === void 0 ? void 0 : _b.call(this, opts);
}
}
exports.BaseWorkerBusHelper = BaseWorkerBusHelper;
//# sourceMappingURL=worker-bus.js.map