@minimaltech/node-infra
Version:
Minimal Technology NodeJS Infrastructure - Loopback 4 Framework
58 lines • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseWorkerThreadHelper = exports.AbstractWorkerThreadHelper = void 0;
const base_helper_1 = require("../../base/base.helper");
const error_utility_1 = require("../../utilities/error.utility");
const node_worker_threads_1 = require("node:worker_threads");
// -------------------------------------------------------------------------------------------
class AbstractWorkerThreadHelper extends base_helper_1.BaseHelper {
}
exports.AbstractWorkerThreadHelper = AbstractWorkerThreadHelper;
// -------------------------------------------------------------------------------------------
class BaseWorkerThreadHelper extends AbstractWorkerThreadHelper {
constructor(opts) {
const { scope } = opts;
super({ scope, identifier: scope });
if (node_worker_threads_1.isMainThread) {
throw (0, error_utility_1.getError)({
message: '[BaseWorker] Cannot start worker in MAIN_THREAD',
});
}
this.buses = {};
}
bindWorkerBus(opts) {
if (!this.buses) {
this.buses = {};
}
const { key, bus } = opts;
if (this.buses[key]) {
this.logger.warn('[bindWorkerBus] Worker Bus existed | key: %s', key);
return;
}
this.buses[key] = bus;
}
unbindWorkerBus(opts) {
var _a, _b;
if (!this.buses) {
return;
}
const { key } = opts;
if (!(key in this.buses)) {
this.logger.warn('[unbindWorkerBus] Worker Bus not existed | key: %s', key);
return;
}
(_b = (_a = this.buses[key]) === null || _a === void 0 ? void 0 : _a.port) === null || _b === void 0 ? void 0 : _b.removeAllListeners();
delete this.buses[key];
}
getWorkerBus(opts) {
const rs = this.buses[opts.key];
if (!rs) {
throw (0, error_utility_1.getError)({
message: `[getWorkerBus] Not found worker bus | key: ${opts.key}`,
});
}
return rs;
}
}
exports.BaseWorkerThreadHelper = BaseWorkerThreadHelper;
//# sourceMappingURL=base.js.map