UNPKG

sdg

Version:

pomelo ts

81 lines 6.76 kB
"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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