minor fix for bug95; also const operators for DataRate
authorTom Henderson <tomh@tomh.org>
Thu, 08 Nov 2007 23:08:00 -0800
changeset 1825 1544b7c8aa18
parent 1824 fd6f6604caad
child 1826 20830de42843
minor fix for bug95; also const operators for DataRate
src/common/data-rate.cc
src/common/data-rate.h
src/devices/csma/csma-net-device.cc
src/devices/point-to-point/point-to-point-net-device.cc
--- a/src/common/data-rate.cc	Mon Nov 05 21:08:02 2007 -0800
+++ b/src/common/data-rate.cc	Thu Nov 08 23:08:00 2007 -0800
@@ -150,31 +150,61 @@
 	return m_bps<rhs.m_bps;
 }
 
+bool DataRate::operator < (const DataRate& rhs) const
+{
+	return m_bps<rhs.m_bps;
+}
+
 bool DataRate::operator <= (const DataRate& rhs)
 {
 	return m_bps<=rhs.m_bps;
 }
 
+bool DataRate::operator <= (const DataRate& rhs) const
+{
+	return m_bps<=rhs.m_bps;
+}
+
 bool DataRate::operator >  (const DataRate& rhs)
 {
 	return m_bps>rhs.m_bps;
 }
 
+bool DataRate::operator >  (const DataRate& rhs) const
+{
+	return m_bps>rhs.m_bps;
+}
+
 bool DataRate::operator >= (const DataRate& rhs)
 {
 	return m_bps>=rhs.m_bps;
 }
 
+bool DataRate::operator >= (const DataRate& rhs) const
+{
+	return m_bps>=rhs.m_bps;
+}
+
 bool DataRate::operator == (const DataRate& rhs)
 {
 	return m_bps==rhs.m_bps;
 }
 
+bool DataRate::operator == (const DataRate& rhs) const
+{
+	return m_bps==rhs.m_bps;
+}
+
 bool DataRate::operator != (const DataRate& rhs)
 {
 	return m_bps!=rhs.m_bps;
 }
 
+bool DataRate::operator != (const DataRate& rhs) const
+{
+	return m_bps!=rhs.m_bps;
+}
+
 double DataRate::CalculateTxTime(uint32_t bytes) const
 {
   return static_cast<double>(bytes)*8/m_bps;
--- a/src/common/data-rate.h	Mon Nov 05 21:08:02 2007 -0800
+++ b/src/common/data-rate.h	Thu Nov 08 23:08:00 2007 -0800
@@ -73,11 +73,17 @@
   DataRate (const std::string s);
   
   bool operator <  (const DataRate& rhs);
+  bool operator <  (const DataRate& rhs) const;
   bool operator <= (const DataRate& rhs);
+  bool operator <= (const DataRate& rhs) const;
   bool operator >  (const DataRate& rhs);
+  bool operator >  (const DataRate& rhs) const;
   bool operator >= (const DataRate& rhs);
+  bool operator >= (const DataRate& rhs) const;
   bool operator == (const DataRate& rhs);
+  bool operator == (const DataRate& rhs) const;
   bool operator != (const DataRate& rhs);
+  bool operator != (const DataRate& rhs) const;
   
   /**
    * \brief Calculate transmission time
--- a/src/devices/csma/csma-net-device.cc	Mon Nov 05 21:08:02 2007 -0800
+++ b/src/devices/csma/csma-net-device.cc	Thu Nov 08 23:08:00 2007 -0800
@@ -198,7 +198,10 @@
 CsmaNetDevice::SetDataRate (DataRate bps)
 {
   NS_LOG_FUNCTION;
-  m_bps = bps;
+  if (!m_channel || bps <= m_channel->GetDataRate ())
+    {
+      m_bps = bps;
+    }
 }
 
 void 
--- a/src/devices/point-to-point/point-to-point-net-device.cc	Mon Nov 05 21:08:02 2007 -0800
+++ b/src/devices/point-to-point/point-to-point-net-device.cc	Thu Nov 08 23:08:00 2007 -0800
@@ -151,7 +151,10 @@
 void PointToPointNetDevice::SetDataRate(const DataRate& bps)
 {
   NS_LOG_FUNCTION;
-  m_bps = bps;
+  if (!m_channel || bps <= m_channel->GetDataRate ())
+    {
+      m_bps = bps;
+    }
 }
 
 void PointToPointNetDevice::SetInterframeGap(const Time& t)