MCPcopy Create free account
hub / github.com/apache/trafficserver / Duration

Class Duration

lib/catch2/catch.hpp:16295–16365  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16293struct RowBreak {};
16294
16295class Duration {
16296 enum class Unit {
16297 Auto,
16298 Nanoseconds,
16299 Microseconds,
16300 Milliseconds,
16301 Seconds,
16302 Minutes
16303 };
16304 static const uint64_t s_nanosecondsInAMicrosecond = 1000;
16305 static const uint64_t s_nanosecondsInAMillisecond = 1000 * s_nanosecondsInAMicrosecond;
16306 static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
16307 static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;
16308
16309 double m_inNanoseconds;
16310 Unit m_units;
16311
16312public:
16313 explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
16314 : m_inNanoseconds(inNanoseconds),
16315 m_units(units) {
16316 if (m_units == Unit::Auto) {
16317 if (m_inNanoseconds < s_nanosecondsInAMicrosecond)
16318 m_units = Unit::Nanoseconds;
16319 else if (m_inNanoseconds < s_nanosecondsInAMillisecond)
16320 m_units = Unit::Microseconds;
16321 else if (m_inNanoseconds < s_nanosecondsInASecond)
16322 m_units = Unit::Milliseconds;
16323 else if (m_inNanoseconds < s_nanosecondsInAMinute)
16324 m_units = Unit::Seconds;
16325 else
16326 m_units = Unit::Minutes;
16327 }
16328
16329 }
16330
16331 auto value() const -> double {
16332 switch (m_units) {
16333 case Unit::Microseconds:
16334 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMicrosecond);
16335 case Unit::Milliseconds:
16336 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMillisecond);
16337 case Unit::Seconds:
16338 return m_inNanoseconds / static_cast<double>(s_nanosecondsInASecond);
16339 case Unit::Minutes:
16340 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
16341 default:
16342 return m_inNanoseconds;
16343 }
16344 }
16345 auto unitsAsString() const -> std::string {
16346 switch (m_units) {
16347 case Unit::Nanoseconds:
16348 return "ns";
16349 case Unit::Microseconds:
16350 return "us";
16351 case Unit::Milliseconds:
16352 return "ms";

Callers 3

analyseFunction · 0.70
benchmarkStartingMethod · 0.70
benchmarkEndedMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected