Implementing base support for TCP-style window-based limiting on per-FIB-prefix and per-face granularity
Currently, limits are supported only by ndn::fw::Limits forwarding
strategy and only at the very basic (not fully tested) level.
diff --git a/model/fib/ndn-fib-impl.cc b/model/fib/ndn-fib-impl.cc
index b91e94c..fd12c68 100644
--- a/model/fib/ndn-fib-impl.cc
+++ b/model/fib/ndn-fib-impl.cc
@@ -208,7 +208,7 @@
}
Ptr<const Entry>
-FibImpl::Begin ()
+FibImpl::Begin () const
{
super::parent_trie::const_recursive_iterator item (super::getTrie ());
super::parent_trie::const_recursive_iterator end (0);
@@ -225,13 +225,13 @@
}
Ptr<const Entry>
-FibImpl::End ()
+FibImpl::End () const
{
return 0;
}
Ptr<const Entry>
-FibImpl::Next (Ptr<const Entry> from)
+FibImpl::Next (Ptr<const Entry> from) const
{
if (from == 0) return 0;
@@ -249,6 +249,49 @@
return item->payload ();
}
+Ptr<Entry>
+FibImpl::Begin ()
+{
+ super::parent_trie::recursive_iterator item (super::getTrie ());
+ super::parent_trie::recursive_iterator end (0);
+ for (; item != end; item++)
+ {
+ if (item->payload () == 0) continue;
+ break;
+ }
+
+ if (item == end)
+ return End ();
+ else
+ return item->payload ();
+}
+
+Ptr<Entry>
+FibImpl::End ()
+{
+ return 0;
+}
+
+Ptr<Entry>
+FibImpl::Next (Ptr<Entry> from)
+{
+ if (from == 0) return 0;
+
+ super::parent_trie::recursive_iterator item (*StaticCast<EntryImpl> (from)->to_iterator ());
+ super::parent_trie::recursive_iterator end (0);
+ for (item++; item != end; item++)
+ {
+ if (item->payload () == 0) continue;
+ break;
+ }
+
+ if (item == end)
+ return End ();
+ else
+ return item->payload ();
+}
+
+
} // namespace fib
} // namespace ndn
} // namespace ns3