UNPKG

metallic-launcher

Version:
80 lines (50 loc) 7.01 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _cluster = require('cluster'); var _cluster2 = _interopRequireDefault(_cluster); var _os = require('os'); var _os2 = _interopRequireDefault(_os); var _metallicInterfaces = require('metallic-interfaces'); var _listenerLoggerMixin = require('../../listener-logger-mixin'); var _listenerLoggerMixin2 = _interopRequireDefault(_listenerLoggerMixin); var _sigusr2Listener = require('./sigusr2-listener'); var _sigusr2Listener2 = _interopRequireDefault(_sigusr2Listener); var _sighupListener = require('./sighup-listener'); var _sighupListener2 = _interopRequireDefault(_sighupListener); var _serverExitListener = require('./server-exit-listener'); var _serverExitListener2 = _interopRequireDefault(_serverExitListener); var _leaderRebootListenerMixin = require('./leader-reboot-listener-mixin'); var _leaderRebootListenerMixin2 = _interopRequireDefault(_leaderRebootListenerMixin); var _leaderReforkListenerMixin = require('./leader-refork-listener-mixin'); var _leaderReforkListenerMixin2 = _interopRequireDefault(_leaderReforkListenerMixin); var _leaderRotateLogListenerMixin = require('./leader-rotate-log-listener-mixin'); var _leaderRotateLogListenerMixin2 = _interopRequireDefault(_leaderRotateLogListenerMixin); var _leader = require('./leader'); var _leader2 = _interopRequireDefault(_leader); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class LeaderFactory extends _metallicInterfaces.FactoryInterface { static create({ metrics, logger } = {}) { const serverPoolSize = _os2.default.cpus().length; const LoggedSigusr2Listener = logger ? _listenerLoggerMixin2.default.mix(_sigusr2Listener2.default) : _sigusr2Listener2.default; const sigusr2Listeners = new LoggedSigusr2Listener({ logger, emitter: process }); const LoggedServerExitListener = logger ? _listenerLoggerMixin2.default.mix(_serverExitListener2.default) : _serverExitListener2.default; const serverExitListeners = new LoggedServerExitListener({ logger, emitter: process }); const LoggedSighupListener = logger ? _listenerLoggerMixin2.default.mix(_sighupListener2.default) : _sighupListener2.default; const sighupListeners = new LoggedSighupListener({ logger, emitter: process }); const LeaderOnSteroids = _leaderRebootListenerMixin2.default.mix(_leaderReforkListenerMixin2.default.mix(_leaderRotateLogListenerMixin2.default.mix(_leader2.default))); return new LeaderOnSteroids({ sighupListeners, serverExitListeners, sigusr2Listeners, cluster: _cluster2.default, serverPoolSize }); } static shouldCreate(clusterOn) { return _leader2.default.is(clusterOn); } } exports.default = LeaderFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbHVzdGVyL2xlYWRlci9sZWFkZXItZmFjdG9yeS5qcyJdLCJuYW1lcyI6WyJMZWFkZXJGYWN0b3J5IiwiY3JlYXRlIiwibWV0cmljcyIsImxvZ2dlciIsInNlcnZlclBvb2xTaXplIiwiY3B1cyIsImxlbmd0aCIsIkxvZ2dlZFNpZ3VzcjJMaXN0ZW5lciIsIm1peCIsInNpZ3VzcjJMaXN0ZW5lcnMiLCJlbWl0dGVyIiwicHJvY2VzcyIsIkxvZ2dlZFNlcnZlckV4aXRMaXN0ZW5lciIsInNlcnZlckV4aXRMaXN0ZW5lcnMiLCJMb2dnZWRTaWdodXBMaXN0ZW5lciIsInNpZ2h1cExpc3RlbmVycyIsIkxlYWRlck9uU3Rlcm9pZHMiLCJjbHVzdGVyIiwic2hvdWxkQ3JlYXRlIiwiY2x1c3Rlck9uIiwiaXMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFZSxNQUFNQSxhQUFOLDhDQUE2QztBQUMxRCxTQUFPQyxNQUFQLENBQWUsRUFBRUMsT0FBRixFQUFXQyxNQUFYLEtBQXNCLEVBQXJDLEVBQXlDO0FBQ3ZDLFVBQU1DLGlCQUFpQixhQUFHQyxJQUFILEdBQVVDLE1BQWpDOztBQUVBLFVBQU1DLHdCQUF3QkosU0FBUyw4QkFBb0JLLEdBQXBCLDJCQUFULDRCQUE5QjtBQUNBLFVBQU1DLG1CQUFtQixJQUFJRixxQkFBSixDQUEwQixFQUFFSixNQUFGLEVBQVVPLFNBQVNDLE9BQW5CLEVBQTFCLENBQXpCOztBQUVBLFVBQU1DLDJCQUEyQlQsU0FBUyw4QkFBb0JLLEdBQXBCLDhCQUFULCtCQUFqQztBQUNBLFVBQU1LLHNCQUFzQixJQUFJRCx3QkFBSixDQUE2QixFQUFFVCxNQUFGLEVBQVVPLFNBQVNDLE9BQW5CLEVBQTdCLENBQTVCOztBQUVBLFVBQU1HLHVCQUF1QlgsU0FBUyw4QkFBb0JLLEdBQXBCLDBCQUFULDJCQUE3QjtBQUNBLFVBQU1PLGtCQUFrQixJQUFJRCxvQkFBSixDQUF5QixFQUFFWCxNQUFGLEVBQVVPLFNBQVNDLE9BQW5CLEVBQXpCLENBQXhCOztBQUVBLFVBQU1LLG1CQUFtQixvQ0FBMEJSLEdBQTFCLENBQ3ZCLG9DQUEwQkEsR0FBMUIsQ0FDRSx1Q0FBNkJBLEdBQTdCLGtCQURGLENBRHVCLENBQXpCOztBQVFBLFdBQU8sSUFBSVEsZ0JBQUosQ0FBcUI7QUFDMUJELHFCQUQwQjtBQUUxQkYseUJBRjBCO0FBRzFCSixzQkFIMEI7QUFJMUJRLGdDQUowQjtBQUsxQmI7QUFMMEIsS0FBckIsQ0FBUDtBQU9EOztBQUVELFNBQU9jLFlBQVAsQ0FBcUJDLFNBQXJCLEVBQWdDO0FBQzlCLFdBQU8saUJBQU9DLEVBQVAsQ0FBVUQsU0FBVixDQUFQO0FBQ0Q7QUFoQ3lEO2tCQUF2Q25CLGEiLCJmaWxlIjoibGVhZGVyLWZhY3RvcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2x1c3RlciBmcm9tICdjbHVzdGVyJ1xuaW1wb3J0IG9zIGZyb20gJ29zJ1xuaW1wb3J0IHsgRmFjdG9yeUludGVyZmFjZSB9IGZyb20gJ21ldGFsbGljLWludGVyZmFjZXMnXG5pbXBvcnQgTGlzdGVuZXJMb2dnZXJNaXhpbiBmcm9tICcuLi8uLi9saXN0ZW5lci1sb2dnZXItbWl4aW4nXG5pbXBvcnQgU2lndXNyMkxpc3RlbmVyIGZyb20gJy4vc2lndXNyMi1saXN0ZW5lcidcbmltcG9ydCBTaWdodXBMaXN0ZW5lciBmcm9tICcuL3NpZ2h1cC1saXN0ZW5lcidcbmltcG9ydCBTZXJ2ZXJFeGl0TGlzdGVuZXIgZnJvbSAnLi9zZXJ2ZXItZXhpdC1saXN0ZW5lcidcbmltcG9ydCBMZWFkZXJSZWJvb3RMaXN0ZW5lck1peGluIGZyb20gJy4vbGVhZGVyLXJlYm9vdC1saXN0ZW5lci1taXhpbidcbmltcG9ydCBMZWFkZXJSZWZvcmtMaXN0ZW5lck1peGluIGZyb20gJy4vbGVhZGVyLXJlZm9yay1saXN0ZW5lci1taXhpbidcbmltcG9ydCBMZWFkZXJSb3RhdGVMb2dMaXN0ZW5lck1peGluIGZyb20gJy4vbGVhZGVyLXJvdGF0ZS1sb2ctbGlzdGVuZXItbWl4aW4nXG5pbXBvcnQgTGVhZGVyIGZyb20gJy4vbGVhZGVyJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMZWFkZXJGYWN0b3J5IGV4dGVuZHMgRmFjdG9yeUludGVyZmFjZSB7XG4gIHN0YXRpYyBjcmVhdGUgKHsgbWV0cmljcywgbG9nZ2VyIH0gPSB7fSkge1xuICAgIGNvbnN0IHNlcnZlclBvb2xTaXplID0gb3MuY3B1cygpLmxlbmd0aFxuXG4gICAgY29uc3QgTG9nZ2VkU2lndXNyMkxpc3RlbmVyID0gbG9nZ2VyID8gTGlzdGVuZXJMb2dnZXJNaXhpbi5taXgoU2lndXNyMkxpc3RlbmVyKSA6IFNpZ3VzcjJMaXN0ZW5lclxuICAgIGNvbnN0IHNpZ3VzcjJMaXN0ZW5lcnMgPSBuZXcgTG9nZ2VkU2lndXNyMkxpc3RlbmVyKHsgbG9nZ2VyLCBlbWl0dGVyOiBwcm9jZXNzIH0pXG5cbiAgICBjb25zdCBMb2dnZWRTZXJ2ZXJFeGl0TGlzdGVuZXIgPSBsb2dnZXIgPyBMaXN0ZW5lckxvZ2dlck1peGluLm1peChTZXJ2ZXJFeGl0TGlzdGVuZXIpIDogU2VydmVyRXhpdExpc3RlbmVyXG4gICAgY29uc3Qgc2VydmVyRXhpdExpc3RlbmVycyA9IG5ldyBMb2dnZWRTZXJ2ZXJFeGl0TGlzdGVuZXIoeyBsb2dnZXIsIGVtaXR0ZXI6IHByb2Nlc3MgfSlcblxuICAgIGNvbnN0IExvZ2dlZFNpZ2h1cExpc3RlbmVyID0gbG9nZ2VyID8gTGlzdGVuZXJMb2dnZXJNaXhpbi5taXgoU2lnaHVwTGlzdGVuZXIpIDogU2lnaHVwTGlzdGVuZXJcbiAgICBjb25zdCBzaWdodXBMaXN0ZW5lcnMgPSBuZXcgTG9nZ2VkU2lnaHVwTGlzdGVuZXIoeyBsb2dnZXIsIGVtaXR0ZXI6IHByb2Nlc3MgfSlcblxuICAgIGNvbnN0IExlYWRlck9uU3Rlcm9pZHMgPSBMZWFkZXJSZWJvb3RMaXN0ZW5lck1peGluLm1peChcbiAgICAgIExlYWRlclJlZm9ya0xpc3RlbmVyTWl4aW4ubWl4KFxuICAgICAgICBMZWFkZXJSb3RhdGVMb2dMaXN0ZW5lck1peGluLm1peChcbiAgICAgICAgICBMZWFkZXJcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcblxuICAgIHJldHVybiBuZXcgTGVhZGVyT25TdGVyb2lkcyh7XG4gICAgICBzaWdodXBMaXN0ZW5lcnMsXG4gICAgICBzZXJ2ZXJFeGl0TGlzdGVuZXJzLFxuICAgICAgc2lndXNyMkxpc3RlbmVycyxcbiAgICAgIGNsdXN0ZXIsXG4gICAgICBzZXJ2ZXJQb29sU2l6ZVxuICAgIH0pXG4gIH1cblxuICBzdGF0aWMgc2hvdWxkQ3JlYXRlIChjbHVzdGVyT24pIHtcbiAgICByZXR1cm4gTGVhZGVyLmlzKGNsdXN0ZXJPbilcbiAgfVxufVxuIl19