@ozmap/logger
Version:
DevOZ logger module.
46 lines (45 loc) • 1.57 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.broadcastEvent = exports.registerEvent = void 0;
const cluster_1 = __importDefault(require("cluster"));
/**
* Function for registering events on the node process.
*
* @param context The context object being bound to the event handler.
* @param event The event name being registered.
* @param handler The event handler function.
*/
function registerEvent(context, event, handler) {
process.on('message', (data) => {
if ('event' in data && data.event === event)
handler.bind(context)(data);
});
}
exports.registerEvent = registerEvent;
/**
* Function for broadcasting event to all node processes.
*
* @param event The event being broadcasted.
* @param [data={}] The event data being passed in.
*/
function broadcastEvent(event, data = {}) {
var _a;
const payload = { ...data, event };
if (!process.send) {
// Non clustered application
process.emit('message', payload);
}
else {
if (cluster_1.default.isWorker)
return;
for (const worker of Object.values((_a = cluster_1.default.workers) !== null && _a !== void 0 ? _a : {})) {
if (!(worker === null || worker === void 0 ? void 0 : worker.send))
continue;
worker.send(payload);
}
}
}
exports.broadcastEvent = broadcastEvent;