Checkpoint
diff --git a/model/ccnx-pit-entry.h b/model/ccnx-pit-entry.h
index 2e38657..5d85c94 100644
--- a/model/ccnx-pit-entry.h
+++ b/model/ccnx-pit-entry.h
@@ -41,6 +41,7 @@
class CcnxFace;
class CcnxNameComponents;
+class CcnxPit;
/// @cond include_hidden
namespace __ccnx_private
@@ -80,6 +81,8 @@
/**
* \ingroup ccnx
* \brief structure for PIT entry
+ *
+ * All set-methods are virtual, in case index rearrangement is necessary in the derived classes
*/
struct CcnxPitEntry : SimpleRefCount<CcnxPitEntry>
{
@@ -98,7 +101,12 @@
* \param offsetTime Relative time to the current moment, representing PIT entry lifetime
* \param fibEntry A FIB entry associated with the PIT entry
*/
- CcnxPitEntry (Ptr<const CcnxInterestHeader> header, Ptr<CcnxFibEntry> fibEntry);
+ CcnxPitEntry (CcnxPit &container, Ptr<const CcnxInterestHeader> header, Ptr<CcnxFibEntry> fibEntry);
+
+ /**
+ * @brief Virtual destructor
+ */
+ virtual ~CcnxPitEntry () {}
/**
* @brief Update lifetime of PIT entry
@@ -108,7 +116,7 @@
*
* @param offsetTime Relative time to the current moment, representing PIT entry lifetime
*/
- void
+ virtual void
UpdateLifetime (const Time &offsetTime);
/**
@@ -132,7 +140,7 @@
*
* @param expireTime absolute simulation time of when the record should expire
*/
- void
+ virtual void
SetExpireTime (const Time &expireTime);
/**
@@ -151,7 +159,7 @@
*
* All nonces are stored for the lifetime of the PIT entry
*/
- void
+ virtual void
AddSeenNonce (uint32_t nonce)
{ m_seenNonces.insert (nonce); }
@@ -161,19 +169,19 @@
* @param face Face to add to the list of incoming faces
* @returns iterator to the added entry
*/
- in_iterator
+ virtual in_iterator
AddIncoming (Ptr<CcnxFace> face);
/**
* @brief Remove incoming entry for face `face`
*/
- void
+ virtual void
RemoveIncoming (Ptr<CcnxFace> face);
/**
* @brief Clear all incoming faces either after all of them were satisfied or NACKed
*/
- void
+ virtual void
ClearIncoming ()
{ m_incoming.clear (); }
@@ -183,13 +191,13 @@
* @param face Face to add to the list of outgoing faces
* @returns iterator to the added entry
*/
- out_iterator
+ virtual out_iterator
AddOutgoing (Ptr<CcnxFace> face);
/**
* @brief Clear all incoming faces either after all of them were satisfied or NACKed
*/
- void
+ virtual void
ClearOutgoing ()
{ m_outgoing.clear (); }
@@ -199,13 +207,13 @@
* This method should be called before face is completely removed from the stack.
* Face is removed from the lists of incoming and outgoing faces
*/
- void
+ virtual void
RemoveAllReferencesToFace (Ptr<CcnxFace> face);
/**
* @brief Flag outgoing face as hopeless
*/
- void
+ virtual void
SetWaitingInVain (out_iterator face);
/**
@@ -224,17 +232,27 @@
/**
* @brief Increase maximum limit of allowed retransmission per outgoing face
*/
- void
+ virtual void
IncreaseAllowedRetxCount ();
-
+
+ Ptr<CcnxFibEntry>
+ GetFibEntry () { return m_fibEntry; };
+
+ const in_container &
+ GetIncoming () const { return m_incoming; }
+
+ const out_container &
+ GetOutgoing () const { return m_outgoing; }
+
+ uint32_t
+ GetMaxRetxCount () const { return m_maxRetxCount; }
+
private:
friend std::ostream& operator<< (std::ostream& os, const CcnxPitEntry &entry);
- /**
- * \brief Default constructor
- */
- CcnxPitEntry () {};
-public:
+protected:
+ CcnxPit &m_container; ///< @brief Reference to the container (to rearrange indexes, if necessary)
+
Ptr<const CcnxNameComponents> m_prefix; ///< \brief Prefix of the PIT entry
Ptr<CcnxFibEntry> m_fibEntry; ///< \brief FIB entry related to this prefix