UNPKG

sdg-admin

Version:

pomelo sdg admin plugin

124 lines 8.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConsoleService = void 0; const events_1 = require("events"); const masterAgent_1 = require("./master/masterAgent"); const monitorAgent_1 = require("./monitor/monitorAgent"); const common_1 = require("./interfaces/common"); const utils_1 = require("./util/utils"); class ConsoleService extends events_1.EventEmitter { constructor(opts) { super(); this.isMaster = false; this.values = {}; this.modules = {}; this.isMaster = opts.master; if (this.isMaster) { this.authServer = opts.authServer || utils_1.defaultAuthServerMaster; this.authUser = opts.authUser || utils_1.defaultAuthUser; this.agent = new masterAgent_1.MasterAgent(this, opts); } else { this.authServer = opts.authServer || utils_1.defaultAuthServerMonitor; this.agent = new monitorAgent_1.MonitorAgent(this, opts); } } start() { this.agent.start(); if (this.isMaster) { this.exportEvent('disconnect'); } else { this.exportEvent('close'); } this.exportEvent(common_1.ESocketEvent.REGISTER); this.exportEvent('error'); for (let mid in this.modules) { this.enable(mid); } } /** * 注册组件 * @param moduleId * @param module */ register(moduleId, module) { let record = { moduleId, module, enable: false }; if (module.type && module.interval) { if ((!this.isMaster && record.module.type === common_1.EModuleAction.PUSH) || (this.isMaster && record.module.type === common_1.EModuleAction.PULL)) { // push for monitor or pull for master(default) record.delay = Math.max(module.delay || 0, 0); record.interval = Math.max(module.interval || 1, 1); record.schedule = true; } } this.modules[moduleId] = record; } /** * 开启组件 * @param moduleId */ enable(moduleId) { let record = this.modules[moduleId]; if (record && !record.enable) { record.enable = true; if (record.schedule) { setTimeout(() => { record.jobId = setInterval(() => this.doSchedule(record), record.interval); }, record.delay); } return true; } return false; } /** * 设置组件的缓存 * @param moduleId * @param value */ set(moduleId, value) { this.values[moduleId] = value; } get(moduleId) { return this.values[moduleId]; } /** * 执行操作 * @param moduleId * @param method * @param body */ async execute(moduleId, method, body) { const m = this.modules[moduleId]; if (!m) throw `unknown module id ${moduleId}`; if (!m.enable) throw `module [${moduleId}] is disabled`; const module = m.module; if (!module || typeof module[method] !== 'function') throw `module [${moduleId}] does not have method ${method}`; return module[method](this.agent, body); } /** * 定时任务 * @param record */ doSchedule(record) { if (this.isMaster) { record.module.masterHandler && record.module.masterHandler(this.agent, { moduleId: record.moduleId }); } else { record.module.monitorHandler && record.module.monitorHandler(this.agent, {}); } } exportEvent(event) { this.agent.on(event, (...args) => this.emit(event, ...args)); } } exports.ConsoleService = ConsoleService; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uc29sZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNDO0FBRXRDLHNEQUFtRDtBQUNuRCx5REFBc0Q7QUFFdEQsZ0RBQWdIO0FBQ2hILHdDQUFrRztBQUVsRyxNQUFhLGNBQWUsU0FBUSxxQkFBWTtJQVE5QyxZQUFZLElBQXdCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBUkgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBcUMsRUFBRSxDQUFDO1FBTXBELElBQUksQ0FBQyxRQUFRLEdBQUksSUFBa0MsQ0FBQyxNQUFNLENBQUM7UUFFM0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSwrQkFBdUIsQ0FBQztZQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFJLElBQWtDLENBQUMsUUFBUSxJQUFJLHVCQUFlLENBQUM7WUFDaEYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxFQUFFLElBQWlDLENBQUMsQ0FBQztTQUN2RTthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLGdDQUF3QixDQUFDO1lBQzlELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSwyQkFBWSxDQUFDLElBQUksRUFBRSxJQUFrQyxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMs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