Some progress on CcnxPit. Partially working
diff --git a/model/ccnx-pit.h b/model/ccnx-pit.h
index b6e4388..0597863 100644
--- a/model/ccnx-pit.h
+++ b/model/ccnx-pit.h
@@ -63,12 +63,17 @@
/**
* \brief Find corresponding PIT entry for the given content name
+ *
+ * Not that this call should be repeated enough times until it return 0.
+ * This way all records with shorter or equal prefix as in content object will be found
+ * and satisfied.
+ *
* \param prefix Prefix for which to lookup the entry
- * \returns iterator to Pit entry. If record not found,
- * return end() iterator
+ * \returns smart pointer to PIT entry. If record not found,
+ * returns 0
*/
virtual Ptr<CcnxPitEntry>
- Lookup (const CcnxContentObjectHeader &header) const = 0;
+ Lookup (const CcnxContentObjectHeader &header) = 0;
/**
* \brief Find a PIT entry for the given content interest
@@ -80,14 +85,6 @@
Lookup (const CcnxInterestHeader &header) = 0;
/**
- * @brief Check if the Interest carries an existent nonce.
- * If not, nonce will be added to the list of known nonces
- * @returns true if interest is duplicate (carries an existent nonce), false otherwise
- */
- virtual bool
- CheckIfDuplicate (Ptr<CcnxPitEntry> entry, const CcnxInterestHeader &header) = 0;
-
- /**
* @brief Creates a PIT entry for the given interest
* @param header parsed interest header
* @returns iterator to Pit entry. If record could not be created (e.g., limit reached),
@@ -96,7 +93,7 @@
* Note. This call assumes that the entry does not exist (i.e., there was a Lookup call before)
*/
virtual Ptr<CcnxPitEntry>
- Create (const CcnxInterestHeader &header) = 0;
+ Create (Ptr<const CcnxInterestHeader> header) = 0;
/**
* @brief Mark PIT entry deleted
@@ -116,19 +113,37 @@
virtual void
Print (std::ostream &os) const = 0;
- template<class A,class M>
- void
- modify (A, M)
- {
- ;
- }
+ // template<class A,class M>
+ // void
+ // modify (A, M)
+ // {
+ // ;
+ // }
- template<class A>
- void
- erase (A)
- {
- ;
- }
+ // template<class A>
+ // void
+ // erase (A)
+ // {
+ // ;
+ // }
+
+ /**
+ * @brief Return first element of FIB (no order guaranteed)
+ */
+ virtual Ptr<CcnxPitEntry>
+ Begin () = 0;
+
+ /**
+ * @brief Return item next after last (no order guaranteed)
+ */
+ virtual Ptr<CcnxPitEntry>
+ End () = 0;
+
+ /**
+ * @brief Advance the iterator
+ */
+ virtual Ptr<CcnxPitEntry>
+ Next (Ptr<CcnxPitEntry>) = 0;
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
@@ -137,7 +152,7 @@
/**
* @brief Static call to cheat python bindings
*/
- static inline Ptr<CcnxFib>
+ static inline Ptr<CcnxPit>
GetCcnxPit (Ptr<Object> node);
////////////////////////////////////////////////////////////////////////////
@@ -179,7 +194,6 @@
// configuration variables. Check implementation of GetTypeId for more details
Time m_PitEntryPruningTimout;
- Time m_PitEntryDefaultLifetime;
};
///////////////////////////////////////////////////////////////////////////////
@@ -192,6 +206,13 @@
return os;
}
+inline Ptr<CcnxPit>
+CcnxPit::GetCcnxPit (Ptr<Object> node)
+{
+ return node->GetObject<CcnxPit> ();
+}
+
+
} // namespace ns3
#endif /* CCNX_PIT_H */