ndn-js-contrib
Version:
Reusable 'Classes' for Named Data Networking: NameTree, PIT, FIB, ContentStore, Interfaces, and Transports
55 lines (54 loc) • 1.48 kB
JavaScript
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;