model: replacing direct usage of fib::FaceMetric variables by inline methods
diff --git a/bindings/modulegen__gcc_ILP32.py b/bindings/modulegen__gcc_ILP32.py
index 9ca7dea..bf1a2af 100644
--- a/bindings/modulegen__gcc_ILP32.py
+++ b/bindings/modulegen__gcc_ILP32.py
@@ -5946,7 +5946,7 @@
'void',
[param('ns3::Ptr< ns3::ndn::Face >', 'face'), param('ns3::ndn::fib::FaceMetric::Status', 'status')])
## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::Entry::m_faces [variable]
- cls.add_instance_attribute('m_faces', 'boost::multi_index::multi_index_container< ns3::ndn::fib::FaceMetric, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< ns3::ndn::fib::i_face, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, boost::multi_index::member< ns3::ndn::fib::FaceMetric, ns3::Ptr< ns3::ndn::Face >, & ( ns3::ndn::fib::FaceMetric::m_face ) >, mpl_::na >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ns3::ndn::fib::i_metric, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, boost::multi_index::composite_key< ns3::ndn::fib::FaceMetric, boost::multi_index::member< ns3::ndn::fib::FaceMetric, ns3::ndn::fib::FaceMetric::Status, & ( ns3::ndn::fib::FaceMetric::m_status ) >, boost::multi_index::member< ns3::ndn::fib::FaceMetric, int, & ( ns3::ndn::fib::FaceMetric::m_routingCost ) >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type >, mpl_::na >, boost::multi_index::random_access< boost::multi_index::tag< ns3::ndn::fib::i_nth, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, std::allocator< ns3::ndn::fib::FaceMetric > >', is_const=False)
+ cls.add_instance_attribute('m_faces', 'boost::multi_index::multi_index_container< ns3::ndn::fib::FaceMetric, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< ns3::ndn::fib::i_face, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, boost::multi_index::const_mem_fun< ns3::ndn::fib::FaceMetric, ns3::Ptr< ns3::ndn::Face >, & ( ns3::ndn::fib::FaceMetric::GetFace ( ) const ) >, mpl_::na >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ns3::ndn::fib::i_metric, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, boost::multi_index::composite_key< ns3::ndn::fib::FaceMetric, boost::multi_index::const_mem_fun< ns3::ndn::fib::FaceMetric, ns3::ndn::fib::FaceMetric::Status, & ( ns3::ndn::fib::FaceMetric::GetStatus ( ) const ) >, boost::multi_index::const_mem_fun< ns3::ndn::fib::FaceMetric, int, & ( ns3::ndn::fib::FaceMetric::GetRoutingCost ( ) const ) >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type >, mpl_::na >, boost::multi_index::random_access< boost::multi_index::tag< ns3::ndn::fib::i_nth, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, std::allocator< ns3::ndn::fib::FaceMetric > >', is_const=False)
## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::Entry::m_needsProbing [variable]
cls.add_instance_attribute('m_needsProbing', 'bool', is_const=False)
## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::Entry::m_prefix [variable]
@@ -5972,22 +5972,37 @@
'ns3::Ptr< ns3::ndn::Face >',
[],
is_const=True)
+ ## ndn-fib-entry.h (module 'ndnSIM'): ns3::Time ns3::ndn::fib::FaceMetric::GetRealDelay() const [member function]
+ cls.add_method('GetRealDelay',
+ 'ns3::Time',
+ [],
+ is_const=True)
+ ## ndn-fib-entry.h (module 'ndnSIM'): int32_t ns3::ndn::fib::FaceMetric::GetRoutingCost() const [member function]
+ cls.add_method('GetRoutingCost',
+ 'int32_t',
+ [],
+ is_const=True)
+ ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::Status ns3::ndn::fib::FaceMetric::GetStatus() const [member function]
+ cls.add_method('GetStatus',
+ 'ns3::ndn::fib::FaceMetric::Status',
+ [],
+ is_const=True)
+ ## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::SetRealDelay(ns3::Time realDelay) [member function]
+ cls.add_method('SetRealDelay',
+ 'void',
+ [param('ns3::Time', 'realDelay')])
+ ## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::SetRoutingCost(int32_t routingCost) [member function]
+ cls.add_method('SetRoutingCost',
+ 'void',
+ [param('int32_t', 'routingCost')])
+ ## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::SetStatus(ns3::ndn::fib::FaceMetric::Status status) [member function]
+ cls.add_method('SetStatus',
+ 'void',
+ [param('ns3::ndn::fib::FaceMetric::Status', 'status')])
## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::UpdateRtt(ns3::Time const & rttSample) [member function]
cls.add_method('UpdateRtt',
'void',
[param('ns3::Time const &', 'rttSample')])
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_face [variable]
- cls.add_instance_attribute('m_face', 'ns3::Ptr< ns3::ndn::Face >', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_realDelay [variable]
- cls.add_instance_attribute('m_realDelay', 'ns3::Time', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_routingCost [variable]
- cls.add_instance_attribute('m_routingCost', 'int32_t', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_rttVar [variable]
- cls.add_instance_attribute('m_rttVar', 'ns3::Time', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_sRtt [variable]
- cls.add_instance_attribute('m_sRtt', 'ns3::Time', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_status [variable]
- cls.add_instance_attribute('m_status', 'ns3::ndn::fib::FaceMetric::Status', is_const=False)
return
def register_Ns3NdnFibFaceMetricContainer_methods(root_module, cls):
diff --git a/bindings/modulegen__gcc_LP64.py b/bindings/modulegen__gcc_LP64.py
index 9ca7dea..bf1a2af 100644
--- a/bindings/modulegen__gcc_LP64.py
+++ b/bindings/modulegen__gcc_LP64.py
@@ -5946,7 +5946,7 @@
'void',
[param('ns3::Ptr< ns3::ndn::Face >', 'face'), param('ns3::ndn::fib::FaceMetric::Status', 'status')])
## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::Entry::m_faces [variable]
- cls.add_instance_attribute('m_faces', 'boost::multi_index::multi_index_container< ns3::ndn::fib::FaceMetric, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< ns3::ndn::fib::i_face, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, boost::multi_index::member< ns3::ndn::fib::FaceMetric, ns3::Ptr< ns3::ndn::Face >, & ( ns3::ndn::fib::FaceMetric::m_face ) >, mpl_::na >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ns3::ndn::fib::i_metric, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, boost::multi_index::composite_key< ns3::ndn::fib::FaceMetric, boost::multi_index::member< ns3::ndn::fib::FaceMetric, ns3::ndn::fib::FaceMetric::Status, & ( ns3::ndn::fib::FaceMetric::m_status ) >, boost::multi_index::member< ns3::ndn::fib::FaceMetric, int, & ( ns3::ndn::fib::FaceMetric::m_routingCost ) >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type >, mpl_::na >, boost::multi_index::random_access< boost::multi_index::tag< ns3::ndn::fib::i_nth, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, std::allocator< ns3::ndn::fib::FaceMetric > >', is_const=False)
+ cls.add_instance_attribute('m_faces', 'boost::multi_index::multi_index_container< ns3::ndn::fib::FaceMetric, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< ns3::ndn::fib::i_face, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, boost::multi_index::const_mem_fun< ns3::ndn::fib::FaceMetric, ns3::Ptr< ns3::ndn::Face >, & ( ns3::ndn::fib::FaceMetric::GetFace ( ) const ) >, mpl_::na >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ns3::ndn::fib::i_metric, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, boost::multi_index::composite_key< ns3::ndn::fib::FaceMetric, boost::multi_index::const_mem_fun< ns3::ndn::fib::FaceMetric, ns3::ndn::fib::FaceMetric::Status, & ( ns3::ndn::fib::FaceMetric::GetStatus ( ) const ) >, boost::multi_index::const_mem_fun< ns3::ndn::fib::FaceMetric, int, & ( ns3::ndn::fib::FaceMetric::GetRoutingCost ( ) const ) >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type >, mpl_::na >, boost::multi_index::random_access< boost::multi_index::tag< ns3::ndn::fib::i_nth, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na >, std::allocator< ns3::ndn::fib::FaceMetric > >', is_const=False)
## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::Entry::m_needsProbing [variable]
cls.add_instance_attribute('m_needsProbing', 'bool', is_const=False)
## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::Entry::m_prefix [variable]
@@ -5972,22 +5972,37 @@
'ns3::Ptr< ns3::ndn::Face >',
[],
is_const=True)
+ ## ndn-fib-entry.h (module 'ndnSIM'): ns3::Time ns3::ndn::fib::FaceMetric::GetRealDelay() const [member function]
+ cls.add_method('GetRealDelay',
+ 'ns3::Time',
+ [],
+ is_const=True)
+ ## ndn-fib-entry.h (module 'ndnSIM'): int32_t ns3::ndn::fib::FaceMetric::GetRoutingCost() const [member function]
+ cls.add_method('GetRoutingCost',
+ 'int32_t',
+ [],
+ is_const=True)
+ ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::Status ns3::ndn::fib::FaceMetric::GetStatus() const [member function]
+ cls.add_method('GetStatus',
+ 'ns3::ndn::fib::FaceMetric::Status',
+ [],
+ is_const=True)
+ ## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::SetRealDelay(ns3::Time realDelay) [member function]
+ cls.add_method('SetRealDelay',
+ 'void',
+ [param('ns3::Time', 'realDelay')])
+ ## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::SetRoutingCost(int32_t routingCost) [member function]
+ cls.add_method('SetRoutingCost',
+ 'void',
+ [param('int32_t', 'routingCost')])
+ ## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::SetStatus(ns3::ndn::fib::FaceMetric::Status status) [member function]
+ cls.add_method('SetStatus',
+ 'void',
+ [param('ns3::ndn::fib::FaceMetric::Status', 'status')])
## ndn-fib-entry.h (module 'ndnSIM'): void ns3::ndn::fib::FaceMetric::UpdateRtt(ns3::Time const & rttSample) [member function]
cls.add_method('UpdateRtt',
'void',
[param('ns3::Time const &', 'rttSample')])
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_face [variable]
- cls.add_instance_attribute('m_face', 'ns3::Ptr< ns3::ndn::Face >', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_realDelay [variable]
- cls.add_instance_attribute('m_realDelay', 'ns3::Time', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_routingCost [variable]
- cls.add_instance_attribute('m_routingCost', 'int32_t', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_rttVar [variable]
- cls.add_instance_attribute('m_rttVar', 'ns3::Time', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_sRtt [variable]
- cls.add_instance_attribute('m_sRtt', 'ns3::Time', is_const=False)
- ## ndn-fib-entry.h (module 'ndnSIM'): ns3::ndn::fib::FaceMetric::m_status [variable]
- cls.add_instance_attribute('m_status', 'ns3::ndn::fib::FaceMetric::Status', is_const=False)
return
def register_Ns3NdnFibFaceMetricContainer_methods(root_module, cls):
diff --git a/examples/custom-strategies/custom-strategy.cc b/examples/custom-strategies/custom-strategy.cc
index be1f25b..5812ca3 100644
--- a/examples/custom-strategies/custom-strategy.cc
+++ b/examples/custom-strategies/custom-strategy.cc
@@ -14,13 +14,13 @@
NS_OBJECT_ENSURE_REGISTERED(CustomStrategy);
LogComponent CustomStrategy::g_log = LogComponent (CustomStrategy::GetLogName ().c_str ());
-
+
std::string
CustomStrategy::GetLogName ()
{
return "ndn.fw.CustomStrategy";
}
-
+
TypeId
CustomStrategy::GetTypeId (void)
{
@@ -28,11 +28,11 @@
.SetGroupName ("Ndn")
.SetParent <BaseStrategy> ()
.AddConstructor <CustomStrategy> ()
-
+
// .AddAttribute ("Attribute", "Attribute spec",
// StringValue ("DefaultValue"),
// MakeStringAccessor (&BaseStrategy::m_variable),
- // MakeStringChecker ())
+ // MakeStringChecker ())
;
return tid;
}
@@ -57,7 +57,7 @@
// forward to best-metric face
if (faceIterator != faces.end ())
{
- if (TrySendOutInterest (inFace, faceIterator->m_face, header, origPacket, pitEntry))
+ if (TrySendOutInterest (inFace, faceIterator->GetFace (), header, origPacket, pitEntry))
propagatedCount ++;
faceIterator ++;
@@ -66,7 +66,7 @@
// forward to second-best-metric face
if (faceIterator != faces.end ())
{
- if (TrySendOutInterest (inFace, faceIterator->m_face, header, origPacket, pitEntry))
+ if (TrySendOutInterest (inFace, faceIterator->GetFace (), header, origPacket, pitEntry))
propagatedCount ++;
faceIterator ++;
@@ -92,11 +92,11 @@
{
m_counter --;
}
-
+
BaseStrategy::WillEraseTimedOutPendingInterest (pitEntry);
}
-
-
+
+
void
CustomStrategy::WillSatisfyPendingInterest (Ptr<Face> inFace,
Ptr<pit::Entry> pitEntry)
@@ -107,11 +107,11 @@
{
m_counter --;
}
-
+
BaseStrategy::WillSatisfyPendingInterest (inFace, pitEntry);
}
-
+
} // namespace fw
} // namespace ndn
} // namespace ns3
diff --git a/model/fib/ndn-fib-entry.cc b/model/fib/ndn-fib-entry.cc
index c04e43b..35b3a99 100644
--- a/model/fib/ndn-fib-entry.cc
+++ b/model/fib/ndn-fib-entry.cc
@@ -54,13 +54,13 @@
FaceMetric::UpdateRtt (const Time &rttSample)
{
// const Time & this->m_rttSample
-
+
//update srtt and rttvar (RFC 2988)
if (m_sRtt.IsZero ())
{
//first RTT measurement
NS_ASSERT_MSG (m_rttVar.IsZero (), "SRTT is zero, but variation is not");
-
+
m_sRtt = rttSample;
m_rttVar = Time (m_sRtt / 2.0);
}
@@ -97,7 +97,7 @@
"Update status can be performed only on existing faces of CcxnFibEntry");
m_faces.modify (record,
- (&ll::_1)->*&FaceMetric::m_status = status);
+ ll::bind (&FaceMetric::SetStatus, ll::_1, status));
// reordering random access index same way as by metric index
m_faces.get<i_nth> ().rearrange (m_faces.get<i_metric> ().begin ());
@@ -117,16 +117,16 @@
else
{
// don't update metric to higher value
- if (record->m_routingCost > metric || record->m_status == FaceMetric::NDN_FIB_RED)
+ if (record->GetRoutingCost () > metric || record->GetStatus () == FaceMetric::NDN_FIB_RED)
{
m_faces.modify (record,
- (&ll::_1)->*&FaceMetric::m_routingCost = metric);
+ ll::bind (&FaceMetric::SetRoutingCost, ll::_1, metric));
m_faces.modify (record,
- (&ll::_1)->*&FaceMetric::m_status = FaceMetric::NDN_FIB_YELLOW);
+ ll::bind (&FaceMetric::SetStatus, ll::_1, FaceMetric::NDN_FIB_YELLOW));
}
}
-
+
// reordering random access index same way as by metric index
m_faces.get<i_nth> ().rearrange (m_faces.get<i_metric> ().begin ());
}
@@ -141,7 +141,7 @@
if (record != m_faces.get<i_face> ().end ())
{
m_faces.modify (record,
- (&ll::_1)->*&FaceMetric::m_realDelay = delay);
+ ll::bind (&FaceMetric::SetRealDelay, ll::_1, delay));
}
}
@@ -154,10 +154,10 @@
face++)
{
m_faces.modify (face,
- (&ll::_1)->*&FaceMetric::m_routingCost = std::numeric_limits<uint16_t>::max ());
+ ll::bind (&FaceMetric::SetRoutingCost, ll::_1, std::numeric_limits<uint16_t>::max ()));
m_faces.modify (face,
- (&ll::_1)->*&FaceMetric::m_status = FaceMetric::NDN_FIB_RED);
+ ll::bind (&FaceMetric::SetStatus, ll::_1, FaceMetric::NDN_FIB_RED));
}
}
diff --git a/model/fib/ndn-fib-entry.h b/model/fib/ndn-fib-entry.h
index 214b0eb..57e8916 100644
--- a/model/fib/ndn-fib-entry.h
+++ b/model/fib/ndn-fib-entry.h
@@ -82,7 +82,7 @@
* @brief Comparison between FaceMetric and Face
*/
bool
- operator< (const Ptr<Face> &face) const { return *m_face < *face; }
+ operator< (const Ptr<Face> &face) const { return *m_face < *face; }
/**
* @brief Return Face associated with FaceMetric
@@ -96,17 +96,72 @@
*/
void
UpdateRtt (const Time &rttSample);
-
+
+ /**
+ * @brief Get current status of FIB entry
+ */
+ Status
+ GetStatus () const
+ {
+ return m_status;
+ }
+
+ /**
+ * @brief Set current status of FIB entry
+ */
+ void
+ SetStatus (Status status)
+ {
+ m_status = status;
+ }
+
+ /**
+ * @brief Get current routing cost
+ */
+ int32_t
+ GetRoutingCost () const
+ {
+ return m_routingCost;
+ }
+
+ /**
+ * @brief Set routing cost
+ */
+ void
+ SetRoutingCost (int32_t routingCost)
+ {
+ m_routingCost = routingCost;
+ }
+
+ /**
+ * @brief Get real propagation delay to the producer, calculated based on NS-3 p2p link delays
+ */
+ Time
+ GetRealDelay () const
+ {
+ return m_realDelay;
+ }
+
+ /**
+ * @brief Set real propagation delay to the producer, calculated based on NS-3 p2p link delays
+ */
+ void
+ SetRealDelay (Time realDelay)
+ {
+ m_realDelay = realDelay;
+ }
+
private:
friend std::ostream& operator<< (std::ostream& os, const FaceMetric &metric);
-public:
+
+private:
Ptr<Face> m_face; ///< Face
-
- Status m_status; ///< \brief Status of the next hop:
+
+ Status m_status; ///< \brief Status of the next hop:
///< - NDN_FIB_GREEN
///< - NDN_FIB_YELLOW
///< - NDN_FIB_RED
-
+
int32_t m_routingCost; ///< \brief routing protocol cost (interpretation of the value depends on the underlying routing protocol)
Time m_sRtt; ///< \brief smoothed round-trip time
@@ -141,7 +196,7 @@
// For fast access to elements using Face
boost::multi_index::ordered_unique<
boost::multi_index::tag<i_face>,
- boost::multi_index::member<FaceMetric,Ptr<Face>,&FaceMetric::m_face>
+ boost::multi_index::const_mem_fun<FaceMetric,Ptr<Face>,&FaceMetric::GetFace>
>,
// List of available faces ordered by (status, m_routingCost)
@@ -149,8 +204,8 @@
boost::multi_index::tag<i_metric>,
boost::multi_index::composite_key<
FaceMetric,
- boost::multi_index::member<FaceMetric,FaceMetric::Status,&FaceMetric::m_status>,
- boost::multi_index::member<FaceMetric,int32_t,&FaceMetric::m_routingCost>
+ boost::multi_index::const_mem_fun<FaceMetric,FaceMetric::Status,&FaceMetric::GetStatus>,
+ boost::multi_index::const_mem_fun<FaceMetric,int32_t,&FaceMetric::GetRoutingCost>
>
>,
@@ -172,10 +227,10 @@
{
public:
typedef Entry base_type;
-
+
public:
class NoFaces {}; ///< @brief Exception class for the case when FIB entry is not found
-
+
/**
* \brief Constructor
* \param prefix smart pointer to the prefix for the FIB entry
@@ -185,7 +240,7 @@
, m_needsProbing (false)
{
}
-
+
/**
* \brief Update status of FIB next hop
* \param status Status to set on the FIB entry
@@ -204,7 +259,7 @@
*/
void
SetRealDelayToProducer (Ptr<Face> face, Time delay);
-
+
/**
* @brief Invalidate face
*
@@ -218,7 +273,7 @@
*/
void
UpdateFaceRtt (Ptr<Face> face, const Time &sample);
-
+
/**
* \brief Get prefix for the FIB entry
*/
diff --git a/model/fw/best-route.cc b/model/fw/best-route.cc
index 03400b7..08bbd7c 100644
--- a/model/fw/best-route.cc
+++ b/model/fw/best-route.cc
@@ -58,11 +58,11 @@
;
return tid;
}
-
+
BestRoute::BestRoute ()
{
}
-
+
bool
BestRoute::DoPropagateInterest (Ptr<Face> inFace,
Ptr<const InterestHeader> header,
@@ -77,14 +77,14 @@
return true;
int propagatedCount = 0;
-
+
BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get<fib::i_metric> ())
{
NS_LOG_DEBUG ("Trying " << boost::cref(metricFace));
- if (metricFace.m_status == fib::FaceMetric::NDN_FIB_RED) // all non-read faces are in front
+ if (metricFace.GetStatus () == fib::FaceMetric::NDN_FIB_RED) // all non-read faces are in front
break;
- if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry))
+ if (!TrySendOutInterest (inFace, metricFace.GetFace (), header, origPacket, pitEntry))
{
continue;
}
diff --git a/model/fw/flooding.cc b/model/fw/flooding.cc
index 80b863a..0c369b7 100644
--- a/model/fw/flooding.cc
+++ b/model/fw/flooding.cc
@@ -59,7 +59,7 @@
;
return tid;
}
-
+
Flooding::Flooding ()
{
}
@@ -77,14 +77,14 @@
BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get<fib::i_metric> ())
{
NS_LOG_DEBUG ("Trying " << boost::cref(metricFace));
- if (metricFace.m_status == fib::FaceMetric::NDN_FIB_RED) // all non-read faces are in the front of the list
+ if (metricFace.GetStatus () == fib::FaceMetric::NDN_FIB_RED) // all non-read faces are in the front of the list
break;
-
- if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry))
+
+ if (!TrySendOutInterest (inFace, metricFace.GetFace (), header, origPacket, pitEntry))
{
continue;
}
-
+
propagatedCount++;
}
diff --git a/model/fw/green-yellow-red.cc b/model/fw/green-yellow-red.cc
index 52acc68..09f3199 100644
--- a/model/fw/green-yellow-red.cc
+++ b/model/fw/green-yellow-red.cc
@@ -72,18 +72,18 @@
NS_ASSERT_MSG (m_pit != 0, "PIT should be aggregated with forwarding strategy");
int propagatedCount = 0;
-
+
BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get<fib::i_metric> ())
{
- if (metricFace.m_status == fib::FaceMetric::NDN_FIB_RED ||
- metricFace.m_status == fib::FaceMetric::NDN_FIB_YELLOW)
+ if (metricFace.GetStatus () == fib::FaceMetric::NDN_FIB_RED ||
+ metricFace.GetStatus () == fib::FaceMetric::NDN_FIB_YELLOW)
break; //propagate only to green faces
- if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry))
+ if (!TrySendOutInterest (inFace, metricFace.GetFace (), header, origPacket, pitEntry))
{
continue;
}
-
+
propagatedCount++;
break; // propagate only one interest
}
diff --git a/model/fw/per-fib-limits.h b/model/fw/per-fib-limits.h
index 47f9ee6..4affec9 100644
--- a/model/fw/per-fib-limits.h
+++ b/model/fw/per-fib-limits.h
@@ -57,13 +57,13 @@
*/
static std::string
GetLogName ();
-
+
/**
* @brief Default constructor
*/
PerFibLimits ()
{ }
-
+
/// \copydoc ForwardingStrategy::WillEraseTimedOutPendingInterest
virtual void
WillEraseTimedOutPendingInterest (Ptr<pit::Entry> pitEntry);
@@ -86,14 +86,14 @@
DidAddFibEntry (Ptr<fib::Entry> fibEntry)
{
ObjectFactory factory;
- factory.SetTypeId (fibEntry->m_faces.begin ()->m_face->GetObject<Limits> ()->GetInstanceTypeId ());
-
+ factory.SetTypeId (fibEntry->m_faces.begin ()->GetFace ()->GetObject<Limits> ()->GetInstanceTypeId ());
+
Ptr<Limits> limits = factory.template Create<Limits> ();
fibEntry->AggregateObject (limits);
super::DidAddFibEntry (fibEntry);
}
-
+
protected:
/// \copydoc ForwardingStrategy::CanSendOutInterest
virtual bool
@@ -102,7 +102,7 @@
Ptr<const InterestHeader> header,
Ptr<const Packet> origPacket,
Ptr<pit::Entry> pitEntry);
-
+
/// \copydoc ForwardingStrategy::WillSatisfyPendingInterest
virtual void
WillSatisfyPendingInterest (Ptr<Face> inFace,
@@ -110,7 +110,7 @@
protected:
static LogComponent g_log; ///< @brief Logging variable
-
+
private:
std::string m_limitType;
};
@@ -149,7 +149,7 @@
Ptr<Limits> fibLimits = pitEntry->GetFibEntry ()->template GetObject<Limits> ();
// no checks for the limit here. the check should be somewhere elese
-
+
if (fibLimits->IsBelowLimit ())
{
if (super::CanSendOutInterest (inFace, outFace, header, origPacket, pitEntry))
@@ -158,7 +158,7 @@
return true;
}
}
-
+
return false;
}
@@ -184,7 +184,7 @@
Ptr<Limits> fibLimits = pitEntry->GetFibEntry ()->template GetObject<Limits> ();
fibLimits->ReturnLimit ();
-
+
super::WillSatisfyPendingInterest (inFace, pitEntry);
}
diff --git a/model/fw/smart-flooding.cc b/model/fw/smart-flooding.cc
index 3777739..c8b8406 100644
--- a/model/fw/smart-flooding.cc
+++ b/model/fw/smart-flooding.cc
@@ -59,7 +59,7 @@
;
return tid;
}
-
+
SmartFlooding::SmartFlooding ()
{
}
@@ -82,14 +82,14 @@
BOOST_FOREACH (const fib::FaceMetric &metricFace, pitEntry->GetFibEntry ()->m_faces.get<fib::i_metric> ())
{
NS_LOG_DEBUG ("Trying " << boost::cref(metricFace));
- if (metricFace.m_status == fib::FaceMetric::NDN_FIB_RED) // all non-read faces are in the front of the list
+ if (metricFace.GetStatus () == fib::FaceMetric::NDN_FIB_RED) // all non-read faces are in the front of the list
break;
-
- if (!TrySendOutInterest (inFace, metricFace.m_face, header, origPacket, pitEntry))
+
+ if (!TrySendOutInterest (inFace, metricFace.GetFace (), header, origPacket, pitEntry))
{
continue;
}
-
+
propagatedCount++;
}
diff --git a/model/ndn-l3-protocol.cc b/model/ndn-l3-protocol.cc
index b0957c5..28d337b 100644
--- a/model/ndn-l3-protocol.cc
+++ b/model/ndn-l3-protocol.cc
@@ -69,7 +69,7 @@
}
-TypeId
+TypeId
L3Protocol::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::ndn::L3Protocol")
@@ -134,7 +134,7 @@
Object::NotifyNewAggregate ();
}
-void
+void
L3Protocol::DoDispose (void)
{
NS_LOG_FUNCTION (this);
@@ -152,7 +152,7 @@
Object::DoDispose ();
}
-uint32_t
+uint32_t
L3Protocol::AddFace (const Ptr<Face> &face)
{
NS_LOG_FUNCTION (this << &face);
@@ -165,7 +165,7 @@
m_faces.push_back (face);
m_faceCounter++;
- m_forwardingStrategy->AddFace (face); // notify that face is added
+ m_forwardingStrategy->AddFace (face); // notify that face is added
return face->GetId ();
}
@@ -181,11 +181,11 @@
for (Ptr<pit::Entry> pitEntry = pit->Begin (); pitEntry != 0; pitEntry = pit->Next (pitEntry))
{
pitEntry->RemoveAllReferencesToFace (face);
-
+
// If this face is the only for the associated FIB entry, then FIB entry will be removed soon.
// Thus, we have to remove the whole PIT entry
if (pitEntry->GetFibEntry ()->m_faces.size () == 1 &&
- pitEntry->GetFibEntry ()->m_faces.begin ()->m_face == face)
+ pitEntry->GetFibEntry ()->m_faces.begin ()->GetFace () == face)
{
entriesToRemoves.push_back (pitEntry);
}
@@ -200,7 +200,7 @@
m_faces.erase (face_it);
GetObject<Fib> ()->RemoveFromAll (face);
- m_forwardingStrategy->RemoveFace (face); // notify that face is removed
+ m_forwardingStrategy->RemoveFace (face); // notify that face is removed
}
Ptr<Face>
@@ -235,21 +235,21 @@
return 0;
}
-uint32_t
+uint32_t
L3Protocol::GetNFaces (void) const
{
return m_faces.size ();
}
// Callback from lower layer
-void
+void
L3Protocol::Receive (const Ptr<Face> &face, const Ptr<const Packet> &p)
{
if (!face->IsUp ())
return;
NS_LOG_DEBUG (*p);
-
+
NS_LOG_LOGIC ("Packet from face " << *face << " received on node " << m_node->GetId ());
Ptr<Packet> packet = p->Copy (); // give upper layers a rw copy of the packet
@@ -271,21 +271,21 @@
// if (header->GetNack () > 0)
// OnNack (face, header, p/*original packet*/);
// else
- // OnInterest (face, header, p/*original packet*/);
+ // OnInterest (face, header, p/*original packet*/);
break;
}
case HeaderHelper::CONTENT_OBJECT_NDNSIM:
{
s_dataCounter ++;
Ptr<ContentObjectHeader> header = Create<ContentObjectHeader> ();
-
+
static ContentObjectTail contentObjectTrailer; //there is no data in this object
// Deserialization. Exception may be thrown
packet->RemoveHeader (*header);
packet->RemoveTrailer (contentObjectTrailer);
- m_forwardingStrategy->OnData (face, header, packet/*payload*/, p/*original packet*/);
+ m_forwardingStrategy->OnData (face, header, packet/*payload*/, p/*original packet*/);
break;
}
case HeaderHelper::INTEREST_CCNB:
@@ -293,7 +293,7 @@
NS_FATAL_ERROR ("ccnb support is broken in this implementation");
break;
}
-
+
// exception will be thrown if packet is not recognized
}
catch (UnknownHeaderException)