Now everything suppose to work, but testing is necessary to determine how well it works.
diff --git a/model/ccnx-pit-impl.h b/model/ccnx-pit-impl.h
index 9dfd62b..d03134c 100644
--- a/model/ccnx-pit-impl.h
+++ b/model/ccnx-pit-impl.h
@@ -25,55 +25,13 @@
#include "../utils/trie-with-policy.h"
#include "../utils/empty-policy.h"
#include "../utils/persistent-policy.h"
+
+#include "ccnx-pit-entry-impl.h"
+
#include "ns3/ccnx-name-components.h"
namespace ns3 {
-template<class Pit>
-class CcnxPitEntryImpl : public CcnxPitEntry
-{
-public:
- CcnxPitEntryImpl (CcnxPit &pit,
- Ptr<const CcnxInterestHeader> header,
- Ptr<CcnxFibEntry> fibEntry)
- : CcnxPitEntry (pit, header, fibEntry)
- , item_ (0)
- {
- static_cast<Pit&> (m_container).i_time.insert (*this);
- }
-
- virtual ~CcnxPitEntryImpl ()
- {
- static_cast<Pit&> (m_container).i_time.erase (*this);
- }
-
- // to make sure policies work
- void
- SetTrie (typename Pit::super::iterator item) { item_ = item; }
-
- typename Pit::super::iterator to_iterator () { return item_; }
- typename Pit::super::const_iterator to_iterator () const { return item_; }
-
-public:
- boost::intrusive::set_member_hook<> time_hook_;
-
-private:
- typename Pit::super::iterator item_;
-};
-
-template<class T>
-struct TimestampIndex
-{
- bool
- operator () (const T &a, const T &b) const
- {
- return a.GetExpireTime () < b.GetExpireTime ();
- }
-};
-
-////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
-
/**
* \ingroup ccnx
* \brief Class implementing Pending Interests Table
@@ -91,8 +49,6 @@
> super;
typedef CcnxPitEntryImpl< CcnxPitImpl > entry;
- // typedef CcnxPitEntryImpl::trie super;
-
/**
* \brief Interface ID
*
@@ -136,8 +92,8 @@
Next (Ptr<CcnxPitEntry>);
protected:
- // inherited from CcnxPit
- virtual void DoCleanExpired ();
+ void RescheduleCleaning ();
+ void CleanExpired ();
// inherited from Object class
virtual void NotifyNewAggregate (); ///< @brief Even when object is aggregated to another Object
@@ -151,6 +107,7 @@
SetMaxSize (uint32_t maxSize);
private:
+ EventId m_cleanEvent;
Ptr<CcnxFib> m_fib; ///< \brief Link to FIB table
// indexes
@@ -160,8 +117,8 @@
boost::intrusive::member_hook< entry,
boost::intrusive::set_member_hook<>,
&entry::time_hook_>
- > expireTimeIndexType;
- expireTimeIndexType i_time;
+ > time_index;
+ time_index i_time;
friend class CcnxPitEntryImpl< CcnxPitImpl >;
};