UNPKG

pinusmod

Version:

[![Build Status](https://travis-ci.org/node-pinus/pinus.svg?branch=master)](https://travis-ci.org/node-pinus/pinus)

80 lines (79 loc) 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Monitor = void 0; /** * Component for monitor. * Load and start monitor client. */ const pinusmod_logger_1 = require("pinusmod-logger"); const admin = require("pinusmod-admin"); const moduleUtil = require("../util/moduleUtil"); const utils = require("../util/utils"); const Constants = require("../util/constants"); const path = require("path"); let logger = (0, pinusmod_logger_1.getLogger)('pinus', path.basename(__filename)); class Monitor { constructor(app, opts) { this.modules = []; opts = opts || {}; this.app = app; this.serverInfo = app.getCurServer(); this.masterInfo = app.getMaster(); this.closeWatcher = opts.closeWatcher; this.monitorOpts = { id: this.serverInfo.id, type: this.app.getServerType(), host: this.masterInfo.host, port: this.masterInfo.port, info: this.serverInfo, env: this.app.get(Constants.RESERVED.ENV), authServer: app.get('adminAuthServerMonitor'), monitorAgentClientFactory: opts.monitorAgentClientFactory }; this.monitorConsole = admin.createMonitorConsole(this.monitorOpts); } start(cb) { moduleUtil.registerDefaultModules(false, this.app, this.closeWatcher); this.startConsole(cb); } startConsole(cb) { moduleUtil.loadModules(this, this.monitorConsole); let self = this; this.monitorConsole.start(function (err) { if (err) { utils.invokeCallback(cb, err); return; } moduleUtil.startModules(self.modules, function (err) { utils.invokeCallback(cb, err); return; }); }); this.monitorConsole.on('error', function (err) { if (!!err) { logger.error('monitorConsole encounters with error: %j', err.stack); return; } }); } stop(cb) { this.monitorConsole.stop(); this.modules = []; process.nextTick(function () { utils.invokeCallback(cb); }); } // monitor reconnect to master reconnect(masterInfo) { let self = this; this.stop(function () { self.monitorOpts.host = masterInfo.host; self.monitorOpts.port = masterInfo.port; self.monitorConsole = admin.createMonitorConsole(self.monitorOpts); self.startConsole(function () { logger.info('restart modules for server : %j finish.', self.app.serverId); }); }); } } exports.Monitor = Monitor;