mm_os
Version:
这是超级美眉服务端框架,用于快速构建应用程序。
87 lines (80 loc) • 1.7 kB
JavaScript
const Index = require('mm_machine').Index;
const Drive = require('./drive');
/**
* RPC导航类
* @extends {Index}
* @class
*/
class RPC extends Index {
/**
* 构造函数
* @param {Object} scope 作用域
* @param {String} title 标题
* @constructor
*/
constructor(scope, title) {
super(scope, __dirname);
this.Drive = Drive;
this.type = "rpc";
this.title = title;
this.list = [];
// 默认启用热更新
this.mode = 3;
}
}
/**
* 运行GRPC方法
* @param {Object} db 数据库管理器
* @param {String} class_name 类名
* @param {String} method 方法名称
* @param {Object} query 查询条件
* @param {Object} body 增改项
* @return {Object} 返回执行结果
*/
RPC.prototype.run = async function(db, class_name, method, query, body) {
if (!db) {
db = {
ret: null
};
}
var lt = this.list;
for (var i = 0, o; o = lt[i++];) {
if (o.config.state === 1 && class_name == o.config.name) {
var ret = await o.run(db, method, query, body);
if (ret) {
db.ret = ret;
break;
}
}
}
return db.ret;
};
/* 导出指令 */
exports.RPC = RPC;
/**
* RPC事件池
*/
if (!$.pool.rpc) {
$.pool.rpc = {};
}
/**
* RPC管理器,用于创建缓存
* @param {String} scope 作用域
* @param {string} title 标题
* @return {Object} 返回一个缓存类
*/
function rpc_admin(scope, title) {
if (!scope) {
scope = $.val.scope + '';
}
var obj = $.pool.rpc[scope];
if (!obj) {
$.pool.rpc[scope] = new RPC(scope, title);
obj = $.pool.rpc[scope];
}
return obj;
}
/**
* @module 导出RPC管理器
*/
$.rpc_admin = rpc_admin;