sdg
Version:
pomelo ts
81 lines • 6.76 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const sdg_rpc_1 = require("sdg-rpc");
const base_1 = tslib_1.__importDefault(require("../base"));
const events_1 = tslib_1.__importDefault(require("../util/events"));
const pathUtil_1 = require("../util/pathUtil");
const tools_1 = require("../util/tools");
const Constants = tslib_1.__importStar(require("../util/constants"));
class ProxyComponent extends base_1.default {
constructor(app, opts) {
super(app, opts);
this.opts = opts;
this.opts.interval = this.opts.interval || 30;
this.opts.router = this.genRouteFunction;
this.opts.context = app;
this.opts.routerContext = app;
this.client = this.genClient();
// app层监控的服务变动事件
this.app.event.on(events_1.default.ADD_SERVERS, this.addServers.bind(this));
this.app.event.on(events_1.default.REMOVE_SERVERS, this.removeServers.bind(this));
this.app.event.on(events_1.default.REPLACE_SERVERS, this.replaceServers.bind(this));
}
start() {
}
afterStart() {
this.client.start();
tools_1.defineGetter(this.app, 'rpc', this.client.proxies.user);
tools_1.defineGetter(this.app, 'sysRpc', this.client.proxies.sys);
this.app.set('rpcInvoke', this.client.rpcInvoke.bind(this.client), true);
}
addServers(servers) {
if (!servers || !servers.length)
return;
this.genProxies(servers);
this.client.addServers(servers);
}
removeServers(ids) {
this.client.removeServers(ids);
}
replaceServers(servers) {
if (!servers || !servers.length)
return;
this.client.proxies = {};
this.genProxies(servers);
this.client.replaceServers(servers);
}
/**
* 根据server目录创建代理内存
* @param servers
*/
genProxies(servers) {
const baseDir = this.app.getBase();
for (const s of servers) {
const serverType = this.app.getServerType(s);
if (this.hasProxy(serverType))
continue;
this.client.addProxies(pathUtil_1.getRemotePaths(baseDir, this.app.isFrontend(s), serverType));
}
}
hasProxy(serverType) {
const proxies = this.client.proxies;
return !!proxies.sys && !!proxies.sys[serverType];
}
genClient() {
return sdg_rpc_1.createClient(this.opts);
}
genRouteFunction(session, msg, app) {
let routes = app.get(Constants.KEYWORDS.ROUTE);
let route;
if (!routes) {
route = sdg_rpc_1.rpcRouter.df;
}
else {
route = routes[msg.serverType] || routes.default || sdg_rpc_1.rpcRouter.df;
}
return route(session, msg, app);
}
}
exports.default = ProxyComponent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNkQ7QUFFN0QsMkRBQTJCO0FBRTNCLG9FQUFvQztBQUVwQywrQ0FBa0Q7QUFDbEQseUNBQTZDO0FBQzdDLHFFQUErQztBQUUvQyxNQUFxQixjQUFlLFNBQVEsY0FBSTtJQUc5QyxZQUFZLEdBQWdCLEVBQVMsSUFBNEI7UUFDL0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQURrQixTQUFJLEdBQUosSUFBSSxDQUF3QjtRQUUvRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFL0IsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBTSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBTSxDQUFDLGVB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