NDN layer now knows how to process ContentObject packets
diff --git a/model/ccnx-pit-entry.h b/model/ccnx-pit-entry.h
index 5da3c4c..842bd88 100644
--- a/model/ccnx-pit-entry.h
+++ b/model/ccnx-pit-entry.h
@@ -44,7 +44,7 @@
namespace __ccnx_private
{
-class i_face {};
+// class i_face {};
}
/**
@@ -62,7 +62,7 @@
// For fast access to elements using CcnxFace
boost::multi_index::ordered_unique<
boost::multi_index::tag<__ccnx_private::i_face>,
- boost::multi_index::identity<CcnxPitEntryIncomingFace>
+ boost::multi_index::member<CcnxPitEntryIncomingFace, Ptr<CcnxFace>, &CcnxPitEntryIncomingFace::m_face>
>
>
> type;
@@ -83,7 +83,7 @@
// For fast access to elements using CcnxFace
boost::multi_index::ordered_unique<
boost::multi_index::tag<__ccnx_private::i_face>,
- boost::multi_index::identity<CcnxPitEntryOutgoingFace>
+ boost::multi_index::member<CcnxPitEntryOutgoingFace, Ptr<CcnxFace>, &CcnxPitEntryOutgoingFace::m_face>
>
>
> type;
@@ -137,6 +137,18 @@
};
/**
+ * \brief Unary function to delete incoming interest for the interface
+ * \param face face that should be removed from the list of incoming interests
+ */
+ struct DeleteIncoming
+ {
+ DeleteIncoming (Ptr<CcnxFace> face) : m_face (face) {}
+ void operator() (CcnxPitEntry &entry);
+ private:
+ Ptr<CcnxFace> m_face;
+ };
+
+ /**
* \brief Unary function to add outgoing interest to PIT entry
*
* \param outgoingFace smart pointer to the face of the outgoing interest
@@ -155,9 +167,9 @@
* \brief Unary function to delete incoming interest for the interface
* \param face face that should be removed from the list of incoming interests
*/
- struct DeleteIncoming
+ struct DeleteOutgoing
{
- DeleteIncoming (Ptr<CcnxFace> face) : m_face (face) {}
+ DeleteOutgoing (Ptr<CcnxFace> face) : m_face (face) {}
void operator() (CcnxPitEntry &entry);
private:
Ptr<CcnxFace> m_face;
@@ -168,10 +180,35 @@
*/
struct ClearIncoming
{
- ClearIncoming ();
+ ClearIncoming () {};
void operator() (CcnxPitEntry &entry);
};
+ /**
+ * \brief Unary function to update FIB status
+ */
+ struct UpdateFibStatus
+ {
+ UpdateFibStatus (Ptr<CcnxFace> face, CcnxFibFaceMetric::Status status);
+ void operator() (CcnxPitEntry &entry);
+ private:
+ Ptr<CcnxFace> m_face;
+ CcnxFibFaceMetric::Status m_status;
+ };
+
+ /**
+ * \brief Unary function to estimate RTT and update smoothed RTT value in FIB
+ * \param outFace iterator of the outgoing face entry
+ */
+ struct EstimateRttAndRemoveFace
+ {
+ EstimateRttAndRemoveFace (CcnxPitEntryOutgoingFaceContainer::type::iterator outFace)
+ : m_outFace (outFace) { };
+ void operator() (CcnxPitEntry &entry);
+ private:
+ CcnxPitEntryOutgoingFaceContainer::type::iterator m_outFace;
+ };
+
const CcnxNameComponents &
GetPrefix () const;
@@ -181,7 +218,7 @@
private:
friend std::ostream& operator<< (std::ostream& os, const CcnxPitEntry &entry);
-private:
+public:
Ptr<CcnxNameComponents> m_prefix; ///< \brief Prefix of the PIT entry
Ptr<CcnxFibEntry> m_fib; ///< \brief FIB entry related to this prefix