Checkpoint
diff --git a/utils/ndn-pit-queue.h b/utils/ndn-pit-queue.h
index e986852..de30713 100644
--- a/utils/ndn-pit-queue.h
+++ b/utils/ndn-pit-queue.h
@@ -22,7 +22,7 @@
#define NDN_PIT_QUEUE_H
#include <map>
-#include <set>
+#include <list>
#include "ns3/ptr.h"
@@ -35,6 +35,14 @@
class PitQueue
{
public:
+ PitQueue ();
+
+ void
+ SetMaxQueueSize (uint32_t size);
+
+ uint32_t
+ GetMaxQueueSize () const;
+
bool
Enqueue (Ptr<Face> inFace,
Ptr<pit::Entry> pitEntry);
@@ -49,38 +57,16 @@
void
Remove (Ptr<pit::Entry> entry);
-private:
- void
- DecreasePerFaceCount (Ptr<Face> inFace);
-
- void
- UpdateLastVirtTime (Ptr<Face> inFace);
private:
- // all maps here consider incoming face (the whole Queue structure is per outgoing face)
+ typedef std::list< Ptr<pit::Entry> > Queue;
+ typedef std::map< Ptr<Face>, Queue > PerInFaceQueue;
+
+ uint32_t m_maxQueueSize;
+
+ PerInFaceQueue::iterator m_lastQueue; // last queue from which interest was taken
- double m_lastProcessedVirtualTime;
-
- typedef std::map< Ptr<Face>, uint32_t > PerInFaceMapOfNumberOfIncomingInterests;
- PerInFaceMapOfNumberOfIncomingInterests m_numberEnqueuedInterests;
-
- typedef std::map< Ptr<Face>, double > PerInFaceMapOfLastVirtualTimes;
- PerInFaceMapOfLastVirtualTimes m_lastVirtualTime;
-
- struct Entry
- {
- Entry (Ptr<Face> inFace, Ptr<pit::Entry> pitEntry, double virtualTime);
-
- bool
- operator < (const Entry &otherEntry) const;
-
- Ptr<Face> m_inFace;
- Ptr<pit::Entry> m_pitEntry;
- double m_virtualTime;
- };
-
- typedef std::multiset< Entry > PendingInterestsQueue;
- PendingInterestsQueue m_queue;
+ PerInFaceQueue m_queues;
};
} // namespace ndn