--- 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)