metallic-launcher
Version:
Service launcher for metallic
80 lines (50 loc) • 7.01 kB
JavaScript
'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