UNPKG

ndn-js-contrib

Version:

Reusable 'Classes' for Named Data Networking: NameTree, PIT, FIB, ContentStore, Interfaces, and Transports

55 lines (54 loc) 1.48 kB
var NameTree = require("./NameTree.js"), Name = require("ndn-js/js/name.js").Name; function Strategy() { this._nameTree = new NameTree(); this._nameTree.insert(new NameTree.Node(new Name(), new Strategy.Default())); return this; } Strategy.Default = function Strategy_default() { return this; }; Strategy.Default.prototype.choose = function Strategy_Default_choose(nexthops) { return nexthops; }; Strategy.Default.prototype.log = function Strategy_Default_log(nexthops, response) { return; }; Strategy.prototype.insert = function Strategy_insert(prefix, strategy) { this._nameTree.get(prefix).setItem(strategy); }; Strategy.prototype.lookup = function Strategy_lookup(interest) { this._nameTree.up(interest.name); var self = this; this._nameTree.skip(function(node) { return (node.isEmpty()); }); var precident; var $__3 = true; var $__4 = false; var $__5 = undefined; try { for (var $__1 = void 0, $__0 = (this._nameTree)[$traceurRuntime.toProperty(Symbol.iterator)](); !($__3 = ($__1 = $__0.next()).done); $__3 = true) { var node = $__1.value; { precident = precident ? precident : node.getItem(); } } } catch ($__6) { $__4 = true; $__5 = $__6; } finally { try { if (!$__3 && $__0.return != null) { $__0.return(); } } finally { if ($__4) { throw $__5; } } } return Promise.resolve(precident); }; module.exports = Strategy;