sdg-admin
Version:
pomelo sdg admin plugin
124 lines • 8.41 kB
JavaScript
"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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