UNPKG

mm_connector

Version:

这是超级美眉游戏连接器,用于连接客户端和服务端,实现前后端安全通讯。

274 lines (251 loc) 5.2 kB
const Index = require('mm_machine').Index; const Drive = require('./drive'); /** * App应用类 * @extends {Index} * @class */ class App extends Index { /** * 构造函数 * @param {Object} scope 作用域 * @param {String} title 标题 * @constructor */ constructor(scope, title) { super(scope, __dirname); this.Drive = Drive; this.type = "app"; this.title = title; this.apps = {}; } } /** * 执行程序 * @param {Object} param1 参数1 * @param {Object} param2 参数2 * @return {Object} 返回执行结果 */ App.prototype.run = function(param1, param2) { var ret; var lt = this.list; for (var i = 0, o; o = lt[i++];) { if (o.onOff) { ret = o.run(param1, param2); if (ret && o.end) { break; } } } return ret; }; /** * 执行应用方法 * @param {String} name 应用名称 * @param {String} method 方法名称 * @param {Object} option 配置参数 * @return {String} 执行结果 */ App.prototype.exec = function(name, method, option) { var ret = ""; var lt = this.list; for (var i = 0, o; o = lt[i++];) { var name = o.config.name; if (o.onOff && name === name) { var func = o[method]; if (func) { ret = func(option); } break; } } return ret; }; /** * 初始化应用 * @param {Object} option 配置参数 * @return {String} 执行结果 */ App.prototype.init = function(option) { var ret = ""; var lt = this.list; for (var i = 0, o; o = lt[i++];) { ret = o.init(option); } return ret; }; App.prototype.sort = function() { this.list.sortBy('sort'); }; /** * 加载应用 * @param {String} path 检索路径 * @param {Boolean} isApp 是否APP */ App.prototype.load = function(path) { if (!path) { path = '/' + this.scope + "/"; } var list = this.list; var list_scope = $.dir.get(path); // 遍历目录路径 list_scope.map(function(o) { var file = './app.json'.fullname(o); if (file.hasFile()) { var obj = new Drive(o); obj.load(file); if (obj.config.name) { list.push(obj); } } }); }; /** * 下载应用 * @param {String} name 应用名称 * @returns {Boolean} */ App.prototype.download = async function(name) { } /** * 删除应用 * @param {String} name 应用名称 * @returns {Boolean} */ App.prototype.remove = async function(name) { var obj = this.list.get(name); if (obj) { console.log("文件", obj); return $.ret.bl(true, "删除成功!"); } return $.ret.bl(false, "应用已删除或不存在!"); } /** * 保存状态 */ App.prototype.saveState = function() { (this.path).saveJson(this.apps); }; /** * 安装应用 * @param {String} name 应用名称 * @returns {Boolean} */ App.prototype.install = async function(name, option) { var obj = this.list.get(name); if (obj) { obj.install(option); this.apps[name] = 1; this.saveState(); } }; /** * 卸载应用 * @param {String} name 应用名称 * @returns {Boolean} */ App.prototype.uninstall = async function(name, option) { var obj = this.list.get(name); if (obj) { obj.uninstall(option); } delete this.apps[name]; this.saveState(); }; /** * 启动应用 * @param {String} name 应用名称 * @returns {Boolean} */ App.prototype.start = async function(name, option) { if (name) { var obj = this.list.get(name); if (obj) { obj.onOff = true; obj.start(option); this.apps[name] = 2; } } else { var list = this.list; for (var i = 0, o; o = list[i++];) { o.onOff = true; o.start(option); this.apps[o.name] = 2; } } this.saveState(); }; /** * 暂停应用 * @param {String} name 应用名称 * @returns {Boolean} */ App.prototype.stop = async function(name, option) { if (name) { var obj = this.list.get(name); if (obj) { obj.onOff = false; obj.stop(option); this.apps[name] = 3; } } else { var list = this.list; for (var i = 0, o; o = list[i++];) { o.onOff = false; o.stop(option); this.apps[o.name] = 3; } } this.saveState(); }; /** * 结束应用 * @param {String} name 应用名称 * @returns {Boolean} */ App.prototype.end = async function(name, option) { if (name) { var obj = this.list.get(name); if (obj) { obj.onOff = false; obj.end(option); this.apps[name] = 4; } } else { var list = this.list; for (var i = 0, o; o = list[i++];) { o.onOff = false; o.end(option); this.apps[o.name] = 4; } } this.saveState(); }; exports.App = App; /** * 创建全局管理器 */ if (!$.pool.app) { $.pool.app = {}; } /** * app管理器, 用于管理应用 * @param {string} scope 作用域 * @param {string} title 标题 * @return {Object} 返回一个缓存类 */ function app_admin(scope, title) { if (!scope) { scope = $.val.scope + ''; } var obj = $.pool.app[scope]; if (!obj) { $.pool.app[scope] = new App(scope, title); obj = $.pool.app[scope]; } return obj; } /** * @module 导出app管理器 */ exports.app_admin = app_admin;