Class for representing data rates. More...
#include "data-rate.h"
Collaboration diagram for ns3::DataRate:Public Member Functions | |
| DataRate () | |
| DataRate (std::string rate) | |
| String constructor. | |
| DataRate (uint64_t bps) | |
| Integer constructor. | |
| Time | CalculateBitsTxTime (uint32_t bits) const |
| Calculate transmission time. | |
| Time | CalculateBytesTxTime (uint32_t bytes) const |
| Calculate transmission time. | |
| uint64_t | GetBitRate () const |
| Get the underlying bitrate. | |
| bool | operator!= (const DataRate &rhs) const |
| DataRate | operator* (double rhs) const |
| Scales the DataRate. | |
| DataRate | operator* (uint64_t rhs) const |
| Scales the DataRate. | |
| DataRate & | operator*= (double rhs) |
| Scales the DataRate. | |
| DataRate & | operator*= (uint64_t rhs) |
| Scales the DataRate. | |
| DataRate | operator+ (DataRate rhs) const |
| DataRate & | operator+= (DataRate rhs) |
| DataRate | operator- (DataRate rhs) const |
| DataRate & | operator-= (DataRate rhs) |
| bool | operator< (const DataRate &rhs) const |
| bool | operator<= (const DataRate &rhs) const |
| bool | operator== (const DataRate &rhs) const |
| bool | operator> (const DataRate &rhs) const |
| bool | operator>= (const DataRate &rhs) const |
Static Private Member Functions | |
| static bool | DoParse (const std::string s, uint64_t *v) |
| Parse a string representing a DataRate into an uint64_t. | |
Private Attributes | |
| uint64_t | m_bps |
| data rate [bps] | |
Friends | |
| std::istream & | operator>> (std::istream &is, DataRate &rate) |
| Stream extraction operator. | |
Class for representing data rates.
Allows for natural and familiar use of data rates. Allows construction from strings, natural multiplication e.g.:
This class also supports the regular comparison operators <, >, <=, >=, ==, and !=
Data rate specifiers consist of
Whitespace is allowed but not required between the numeric value and multiplier or unit.
Supported multiplier prefixes:
| Prefix | Value |
|---|---|
| "k", "K" | 1000 |
| "Ki" | 1024 |
| "M" | 1000000 |
| "Mi" | 1024 Ki |
| "G" | 10^9 |
| "Gi " | 1024 Mi |
Supported unit strings:
| Symbol | Meaning |
|---|---|
| "b" | bits |
| "B" | 8-bit bytes |
| "s", "/s" | per second |
Examples:
Definition at line 88 of file data-rate.h.
| ns3::DataRate::DataRate | ( | ) |
Definition at line 188 of file data-rate.cc.
References NS_LOG_FUNCTION.
Referenced by operator*(), operator+(), and operator-().
Here is the caller graph for this function:| ns3::DataRate::DataRate | ( | uint64_t | bps | ) |
Integer constructor.
Construct a data rate from an integer. This class only supports positive integer data rates in units of bits/s, meaning 1bit/s is the smallest non-trivial bitrate available.
| bps | bit/s value |
Definition at line 194 of file data-rate.cc.
References NS_LOG_FUNCTION.
| ns3::DataRate::DataRate | ( | std::string | rate | ) |
String constructor.
Construct a data rate from a string. Many different unit strings are supported Supported unit strings: bps, b/s, Bps, B/s
kbps, kb/s, Kbps, Kb/s, kBps, kB/s, KBps, KB/s, Kib/s, KiB/s
Mbps, Mb/s, MBps, MB/s, Mib/s, MiB/s
Gbps, Gb/s, GBps, GB/s, Gib/s, GiB/s
Examples: "56kbps" = 56,000 bits/s
"128 kb/s" = 128,000 bits/s
"8Kib/s" = 1 KiB/s = 8192 bits/s
"1kB/s" = 8000 bits/s
| rate | string representing the desired rate |
Definition at line 311 of file data-rate.cc.
References DoParse(), m_bps, NS_FATAL_ERROR, and NS_LOG_FUNCTION.
Here is the call graph for this function:Calculate transmission time.
Calculates the transmission time at this data rate
| bits | The number of bits (not bytes) for which to calculate |
Definition at line 298 of file data-rate.cc.
References m_bps, NS_LOG_FUNCTION, and ns3::Seconds().
Referenced by CalculateBytesTxTime(), and DataRateTestCase1::SingleTest().
Here is the call graph for this function:
Here is the caller graph for this function:Calculate transmission time.
Calculates the transmission time at this data rate
| bytes | The number of bytes (not bits) for which to calculate |
Definition at line 291 of file data-rate.cc.
References CalculateBitsTxTime(), and NS_LOG_FUNCTION.
Referenced by ns3::CsmaNetDevice::Attach(), ns3::TbfQueueDisc::DoDequeue(), DataRateTestCase1::SingleTest(), ns3::SimpleNetDevice::StartTransmission(), ns3::HalfDuplexIdealPhy::StartTx(), ns3::CsmaNetDevice::TransmitStart(), and ns3::PointToPointNetDevice::TransmitStart().
Here is the call graph for this function:
Here is the caller graph for this function:
|
staticprivate |
Parse a string representing a DataRate into an uint64_t.
Allowed unit representations include all combinations of
| [in] | s | The string representation, including unit |
| [in,out] | v | The location to put the value, in bits/sec. |
Definition at line 35 of file data-rate.cc.
References NS_LOG_FUNCTION.
Referenced by DataRate().
Here is the caller graph for this function:| uint64_t ns3::DataRate::GetBitRate | ( | ) | const |
Get the underlying bitrate.
Definition at line 305 of file data-rate.cc.
References m_bps, and NS_LOG_FUNCTION.
Referenced by ns3::TcpBbr::AckAggregationCwnd(), ns3::OnOffApplication::CancelEvents(), ns3::TcpBbr::CheckFullPipe(), ns3::TbfQueueDisc::DoDequeue(), ns3::RedQueueDisc::InitializeParams(), ns3::TcpBbr::InitPacingRate(), ns3::operator*(), ns3::operator<<(), PacingRateTracer(), ns3::OnOffApplication::ScheduleNextTx(), ns3::TutorialApp::ScheduleTx(), Ipv4DynamicGlobalRoutingTestCase::SendData(), ns3::TcpBbr::SetPacingRate(), TraceQueueLength(), and ns3::TcpBbr::UpdateAckAggregation().
Here is the caller graph for this function:| bool ns3::DataRate::operator!= | ( | const DataRate & | rhs | ) | const |
| rhs | the datarate to compare to this datarate |
Definition at line 285 of file data-rate.cc.
References m_bps.
Scales the DataRate.
Multiplies with double and is re-casted to an int
| rhs | the double to multiply to this datarate |
Definition at line 229 of file data-rate.cc.
References DataRate(), and m_bps.
Here is the call graph for this function:| DataRate ns3::DataRate::operator* | ( | uint64_t | rhs | ) | const |
Scales the DataRate.
| rhs | the uint64_t to multiply to this datarate |
Definition at line 242 of file data-rate.cc.
References DataRate(), and m_bps.
Here is the call graph for this function:Scales the DataRate.
Multiplies with double and is re-casted to an int
| rhs | the double to multiply to this datarate |
Definition at line 235 of file data-rate.cc.
References m_bps.
| DataRate & ns3::DataRate::operator*= | ( | uint64_t | rhs | ) |
Scales the DataRate.
| rhs | the uint64_t to multiply to this datarate |
Definition at line 248 of file data-rate.cc.
References m_bps.
Definition at line 201 of file data-rate.cc.
References DataRate(), and m_bps.
Here is the call graph for this function:Definition at line 214 of file data-rate.cc.
References DataRate(), m_bps, and NS_ASSERT_MSG.
Here is the call graph for this function:Definition at line 221 of file data-rate.cc.
References m_bps, and NS_ASSERT_MSG.
| bool ns3::DataRate::operator< | ( | const DataRate & | rhs | ) | const |
| rhs | the datarate to compare to this datarate |
Definition at line 254 of file data-rate.cc.
References m_bps.
| bool ns3::DataRate::operator<= | ( | const DataRate & | rhs | ) | const |
| rhs | the datarate to compare to this datarate |
Definition at line 260 of file data-rate.cc.
References m_bps.
| bool ns3::DataRate::operator== | ( | const DataRate & | rhs | ) | const |
| rhs | the datarate to compare to this datarate |
Definition at line 279 of file data-rate.cc.
References m_bps.
| bool ns3::DataRate::operator> | ( | const DataRate & | rhs | ) | const |
| rhs | the datarate to compare to this datarate |
Definition at line 267 of file data-rate.cc.
References m_bps.
| bool ns3::DataRate::operator>= | ( | const DataRate & | rhs | ) | const |
| rhs | the datarate to compare to this datarate |
Definition at line 273 of file data-rate.cc.
References m_bps.
|
friend |
Stream extraction operator.
| is | the stream |
| rate | the data rate |
Definition at line 331 of file data-rate.cc.
|
private |
data rate [bps]
Definition at line 275 of file data-rate.h.
Referenced by DataRate(), CalculateBitsTxTime(), GetBitRate(), operator!=(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator<(), operator<=(), operator==(), operator>(), and operator>=().