Replacing boost::multi_index to std::set for OutgoingFaces in PIT entry
diff --git a/model/pit/ndn-pit-entry-outgoing-face.cc b/model/pit/ndn-pit-entry-outgoing-face.cc
index 265529c..1ddf1d6 100644
--- a/model/pit/ndn-pit-entry-outgoing-face.cc
+++ b/model/pit/ndn-pit-entry-outgoing-face.cc
@@ -34,6 +34,26 @@
{
}
+OutgoingFace::OutgoingFace ()
+ : m_face (0)
+ , m_sendTime (0)
+ , m_retxCount (0)
+ , m_waitingInVain (false)
+{
+}
+
+OutgoingFace &
+OutgoingFace::operator = (const OutgoingFace &other)
+{
+ m_face = other.m_face;
+ m_sendTime = other.m_sendTime;
+ m_retxCount = other.m_retxCount;
+ m_waitingInVain = other.m_waitingInVain;
+
+ return *this;
+}
+
+
void
OutgoingFace::UpdateOnRetransmit ()
{
diff --git a/model/pit/ndn-pit-entry-outgoing-face.h b/model/pit/ndn-pit-entry-outgoing-face.h
index 1a4d8b5..63c6378 100644
--- a/model/pit/ndn-pit-entry-outgoing-face.h
+++ b/model/pit/ndn-pit-entry-outgoing-face.h
@@ -51,6 +51,17 @@
OutgoingFace (Ptr<Face> face);
/**
+ * @brief Default constructor, necessary for Python bindings, but should not be used anywhere else.
+ */
+ OutgoingFace ();
+
+ /**
+ * @brie Copy operator
+ */
+ OutgoingFace &
+ operator = (const OutgoingFace &other);
+
+ /**
* @brief Update outgoing entry upon retransmission
*/
void
diff --git a/model/pit/ndn-pit-entry.cc b/model/pit/ndn-pit-entry.cc
index b578c0e..765693f 100644
--- a/model/pit/ndn-pit-entry.cc
+++ b/model/pit/ndn-pit-entry.cc
@@ -90,8 +90,9 @@
if (!ret.second)
{ // outgoing face already exists
- m_outgoing.modify (ret.first,
- ll::bind (&OutgoingFace::UpdateOnRetransmit, ll::_1));
+ const_cast<OutgoingFace&>(*ret.first).UpdateOnRetransmit ();
+ // m_outgoing.modify (ret.first,
+ // ll::bind (&OutgoingFace::UpdateOnRetransmit, ll::_1));
}
return ret.first;
@@ -129,9 +130,10 @@
out_iterator item = m_outgoing.find (face);
if (item == m_outgoing.end ())
return;
-
- m_outgoing.modify (item,
- (&ll::_1)->*&OutgoingFace::m_waitingInVain = true);
+
+ const_cast<OutgoingFace&>(*item).m_waitingInVain = true;
+ // m_outgoing.modify (item,
+ // (&ll::_1)->*&OutgoingFace::m_waitingInVain = true);
}
diff --git a/model/pit/ndn-pit-entry.h b/model/pit/ndn-pit-entry.h
index 8dc5d24..55aa7de 100644
--- a/model/pit/ndn-pit-entry.h
+++ b/model/pit/ndn-pit-entry.h
@@ -57,25 +57,26 @@
* Indexes:
* - by face (may be it will be possible to replace with just the std::map)
*/
-struct OutgoingFaceContainer
-{
- /// @cond include_hidden
- typedef boost::multi_index::multi_index_container<
- OutgoingFace,
- boost::multi_index::indexed_by<
- // For fast access to elements using NdnFace
- boost::multi_index::ordered_unique<
- boost::multi_index::tag<i_face>,
- boost::multi_index::member<OutgoingFace, Ptr<Face>, &OutgoingFace::m_face>
- >,
- boost::multi_index::ordered_non_unique<
- boost::multi_index::tag<i_retx>,
- boost::multi_index::member<OutgoingFace, uint32_t, &OutgoingFace::m_retxCount>
- >
- >
- > type;
- /// @endcond
-};
+// struct OutgoingFaceContainer
+// {
+// /// @cond include_hidden
+// typedef boost::multi_index::multi_index_container<
+// OutgoingFace,
+// boost::multi_index::indexed_by<
+// // For fast access to elements using NdnFace
+// boost::multi_index::ordered_unique<
+// boost::multi_index::tag<i_face>,
+// boost::multi_index::member<OutgoingFace, Ptr<Face>, &OutgoingFace::m_face>
+// >
+// // ,
+// // boost::multi_index::ordered_non_unique<
+// // boost::multi_index::tag<i_retx>,
+// // boost::multi_index::member<OutgoingFace, uint32_t, &OutgoingFace::m_retxCount>
+// // >
+// >
+// > type;
+// /// @endcond
+// };
/**
@@ -90,7 +91,8 @@
typedef std::set< IncomingFace > in_container; ///< @brief incoming faces container type
typedef in_container::iterator in_iterator; ///< @brief iterator to incoming faces
- typedef OutgoingFaceContainer::type out_container; ///< @brief outgoing faces container type
+ // typedef OutgoingFaceContainer::type out_container; ///< @brief outgoing faces container type
+ typedef std::set< OutgoingFace > out_container; ///< @brief outgoing faces container type
typedef out_container::iterator out_iterator; ///< @brief iterator to outgoing faces
typedef std::set< uint32_t > nonce_container; ///< @brief nonce container type