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