omelop
Version:
[](https://travis-ci.org/node-omelop/omelop)
127 lines • 8.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.manualReloadRemoters = exports.RemoteComponent = void 0;
const pathUtil = require("../util/pathUtil");
const omelop_rpc_1 = require("omelop-rpc");
const omelop_logger_1 = require("omelop-logger");
const path = require("path");
/**
* Remote component class
*
* @param {Object} app current application context
* @param {Object} opts construct parameters
*/
class RemoteComponent {
constructor(app, opts) {
this.app = app;
this.name = '__remote__';
opts = opts || {};
this.opts = opts;
// cacheMsg is deprecated, just for compatibility here.
opts.bufferMsg = opts.bufferMsg || opts.cacheMsg || false;
opts.interval = opts.interval || 30;
if (app.enabled('rpcDebugLog')) {
opts.rpcDebugLog = true;
opts.rpcLogger = (0, omelop_logger_1.getLogger)('rpc-debug', path.basename(__filename));
}
opts.relativePath = opts.relativePath || false;
opts.paths = this.getRemotePaths(opts.relativePath);
opts.context = this.app;
let remoters = {};
opts.services = {};
opts.services['user'] = remoters;
let info = this.app.getCurrentServer();
// 添加插件中的remoter到ServerInfo中
for (let plugin of this.app.usedPlugins) {
if (plugin.remoterPath) {
opts.paths.push({
namespace: 'user',
serverType: info.serverType,
path: plugin.remoterPath
});
}
}
// 添加路径到ServerInfo中
info.remoterPaths = opts.paths;
}
/**
* Remote component lifecycle function
*
* @param {Function} cb
* @return {Void}
*/
start(cb) {
this.opts.port = this.app.getCurServer().port;
this.remote = this.genRemote(this.opts);
this.remote.start();
process.nextTick(cb);
}
/**
* Remote component lifecycle function
*
* @param {Boolean} force whether stop the component immediately
* @param {Function} cb
* @return {Void}
*/
stop(force, cb) {
this.remote.stop(force);
process.nextTick(cb);
}
/**
* Get remote paths from application
*
* @param {Boolean} relativePath convert path to relative path
* @return {Array} paths
*
*/
getRemotePaths(relativePath) {
let paths = [];
let role;
// master server should not come here
if (this.app.isFrontend()) {
role = 'frontend';
}
else {
role = 'backend';
}
let sysPath = pathUtil.getSysRemotePath(role), serverType = this.app.getServerType();
if (sysPath !== null) {
paths.push(pathUtil.remotePathRecord('sys', serverType, sysPath, relativePath));
}
let userPath = pathUtil.getUserRemotePath(this.app.getBase(), serverType);
if (userPath !== null) {
paths.push(pathUtil.remotePathRecord('user', serverType, userPath, relativePath));
}
return paths;
}
/**
* Generate remote server instance
*
* @param {Object} app current application context
* @param {Object} opts contructor parameters for rpc Server
* @return {Object} remote server instance
*/
genRemote(opts) {
if (!!opts.rpcServer) {
return opts.rpcServer.create(opts);
}
else {
return (0, omelop_rpc_1.createServer)(opts);
}
}
}
exports.RemoteComponent = RemoteComponent;
function manualReloadRemoters(app) {
if (!app.components.__remote__) {
return;
}
const remote = app.components.__remote__.remote;
if (remote['manualReloadRemoters']) {
remote['manualReloadRemoters']();
}
else {
console.warn('manualReloadRemoters no method');
}
}
exports.manualReloadRemoters = manualReloadRemoters;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvcmVtb3RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLDZDQUE2QztBQUM3QywyQ0FBdUc7QUFHdkcsaURBQWtEO0FBRWxELDZCQUE2QjtBQXFCN0I7Ozs7O0dBS0c7QUFDSCxNQUFhLGVBQWU7SUFHeEIsWUFBb0IsR0FBZ0IsRUFBRSxJQUE2QjtRQUEvQyxRQUFHLEdBQUgsR0FBRyxDQUFhO1FBdUNwQyxTQUFJLEdBQUcsWUFBWSxDQUFDO1FBdENoQixJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBQSx5QkFBUyxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDdEU7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRXhCLElBQUksUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM1QixJQUFJLENB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