graph-common
Version:
Open Graph API core js lib
70 lines (58 loc) • 1.97 kB
JavaScript
(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);