UNPKG

graph-common

Version:
70 lines (58 loc) 1.97 kB
(function() { var Router, RouterManager; Router = null; RouterManager = (function() { function RouterManager(graph, done) { this.graph = graph; this.database = this.graph.database; Router = this.database.model('Router'); this.routers = {}; this.load_routers(done); } RouterManager.prototype.load_routers = function(done) { var self; self = this; return Router.find({}, function(err, routers) { var router, _i, _len; for (_i = 0, _len = routers.length; _i < _len; _i++) { router = routers[_i]; self.add_router(router); } return done(); }); }; RouterManager.prototype.add_router = function(router) { this.graph.verbose('RouterManager> add:', router.name); return this.routers[router.name] = router; }; RouterManager.prototype.get_router = function(router_name) { if (!this.routers[router_name].loaded) { this.routers[router_name].loaded = require(this.routers[router_name].require); } return this.routers[router_name].loaded; }; RouterManager.prototype.create_router = function(router_data) { var router; this.graph.verbose('RouterManager> create:', router_data); router = new Router(router_data); return this.add_router(router); }; RouterManager.prototype.query = function(query) { var router_config, router_name, _ref; query.routers = []; _ref = query.node.routers; for (router_name in _ref) { router_config = _ref[router_name]; query.routers.push({ name: router_name, configuration: router_config, router: this.get_router(router_name) }); } this.graph.verbose('RouterManager> resolved:', query.routers); return query.current_router = query.routers.shift(); }; return RouterManager; })(); module.exports = RouterManager; }).call(this);