NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
ndn::time Namespace Reference

Classes

class  CustomClock
 Class implementing custom system or steady clock behavior. More...
 
class  steady_clock
 Steady clock. More...
 
class  system_clock
 System clock. More...
 
class  UnitTestClock
 Clock that can be used in unit tests for time-dependent tests independent of wall clock. More...
 
class  UnitTestClockTraits
 Traits for UnitTestClock, defining default behavior for different clocks. More...
 
class  UnitTestClockTraits< system_clock >
 Specialization of UnitTestClockTraits for system_clock. More...
 

Typedefs

using CustomSystemClock = CustomClock< system_clock >
 
using CustomSteadyClock = CustomClock< steady_clock >
 
using UnitTestSystemClock = UnitTestClock< system_clock >
 
using UnitTestSteadyClock = UnitTestClock< steady_clock >
 
typedef boost::chrono::steady_clock base_steady_clock
 
template<typename Rep , typename Period >
using duration = boost::chrono::duration< Rep, Period >
 
using days = duration< int_fast32_t, boost::ratio< 86400 > >
 
using weeks = duration< int_fast32_t, boost::ratio< 604800 > >
 
using months = duration< int_fast32_t, boost::ratio< 2629746 > >
 
using years = duration< int_fast32_t, boost::ratio< 31556952 > >
 
using hours = boost::chrono::hours
 
using minutes = boost::chrono::minutes
 
using seconds = boost::chrono::seconds
 
using milliseconds = boost::chrono::milliseconds
 
using microseconds = boost::chrono::microseconds
 
using nanoseconds = boost::chrono::nanoseconds
 

Functions

void setCustomClocks (shared_ptr< CustomSteadyClock > steadyClock=nullptr, shared_ptr< CustomSystemClock > systemClock=nullptr)
 Set custom system and steady clocks. More...
 
const system_clock::time_pointgetUnixEpoch ()
 Return a system_clock::time_point representing the UNIX time epoch, i.e., 00:00:00 UTC on 1 January 1970. More...
 
milliseconds toUnixTimestamp (const system_clock::time_point &point)
 Convert system_clock::time_point to UNIX timestamp. More...
 
system_clock::time_point fromUnixTimestamp (milliseconds duration)
 Convert UNIX timestamp to system_clock::time_point. More...
 
static boost::posix_time::ptime convertToPosixTime (const system_clock::time_point &timePoint)
 
std::string toIsoString (const system_clock::time_point &timePoint)
 Convert to the ISO 8601 string representation, basic format (YYYYMMDDTHHMMSS,fffffffff). More...
 
std::string toIsoExtendedString (const system_clock::time_point &timePoint)
 Convert to the ISO 8601 string representation, extended format (YYYY-MM-DDTHH:MM:SS,fffffffff). More...
 
static system_clock::time_point convertToTimePoint (const boost::posix_time::ptime &ptime)
 
system_clock::time_point fromIsoString (const std::string &isoString)
 Convert from the ISO 8601 basic string format (YYYYMMDDTHHMMSS,fffffffff) to the internal time format. More...
 
system_clock::time_point fromIsoExtendedString (const std::string &isoString)
 Convert from the ISO 8601 extended string format (YYYY-MM-DDTHH:MM:SS,fffffffff) to the internal time format. More...
 
std::string toString (const system_clock::time_point &timePoint, const std::string &format="%Y-%m-%d %H:%M:%S", const std::locale &locale=std::locale("C"))
 Convert time point to string with specified format. More...
 
system_clock::time_point fromString (const std::string &timePointStr, const std::string &format="%Y-%m-%d %H:%M:%S", const std::locale &locale=std::locale("C"))
 Convert from string of specified format into time point. More...
 
template<typename Rep , typename Period , typename = std::enable_if_t<std::numeric_limits<Rep>::is_signed>>
constexpr duration< Rep, Period > abs (duration< Rep, Period > d)
 

Variables

static shared_ptr< CustomSystemClockg_systemClock
 
static shared_ptr< CustomSteadyClockg_steadyClock
 

Typedef Documentation

◆ CustomSystemClock

Definition at line 53 of file time-custom-clock.hpp.

◆ CustomSteadyClock

Definition at line 54 of file time-custom-clock.hpp.

◆ UnitTestSystemClock

◆ UnitTestSteadyClock

◆ base_steady_clock

typedef boost::chrono::steady_clock ndn::time::base_steady_clock

Definition at line 76 of file time.cpp.

◆ duration

template<typename Rep , typename Period >
using ndn::time::duration = typedef boost::chrono::duration<Rep, Period>

Definition at line 34 of file time.hpp.

◆ days

using ndn::time::days = typedef duration<int_fast32_t, boost::ratio<86400> >

Definition at line 39 of file time.hpp.

◆ weeks

using ndn::time::weeks = typedef duration<int_fast32_t, boost::ratio<604800> >

Definition at line 40 of file time.hpp.

◆ months

using ndn::time::months = typedef duration<int_fast32_t, boost::ratio<2629746> >

Definition at line 41 of file time.hpp.

◆ years

using ndn::time::years = typedef duration<int_fast32_t, boost::ratio<31556952> >

Definition at line 42 of file time.hpp.

◆ hours

using ndn::time::hours = typedef boost::chrono::hours

Definition at line 45 of file time.hpp.

◆ minutes

using ndn::time::minutes = typedef boost::chrono::minutes

Definition at line 46 of file time.hpp.

◆ seconds

using ndn::time::seconds = typedef boost::chrono::seconds

Definition at line 47 of file time.hpp.

◆ milliseconds

using ndn::time::milliseconds = typedef boost::chrono::milliseconds

Definition at line 48 of file time.hpp.

◆ microseconds

using ndn::time::microseconds = typedef boost::chrono::microseconds

Definition at line 49 of file time.hpp.

◆ nanoseconds

using ndn::time::nanoseconds = typedef boost::chrono::nanoseconds

Definition at line 50 of file time.hpp.

Function Documentation

◆ setCustomClocks()

void ndn::time::setCustomClocks ( shared_ptr< CustomSteadyClock steadyClock = nullptr,
shared_ptr< CustomSystemClock systemClock = nullptr 
)

Set custom system and steady clocks.

When steadyClock or systemClock set to nullptr, the default implementation of the corresponding clock will be used

Definition at line 36 of file time.cpp.

References nonstd::optional_lite::std11::move().

Referenced by ns3::ndn::StackHelper::setCustomNdnCxxClocks().

◆ getUnixEpoch()

const system_clock::time_point & ndn::time::getUnixEpoch ( )

Return a system_clock::time_point representing the UNIX time epoch, i.e., 00:00:00 UTC on 1 January 1970.

Definition at line 106 of file time.cpp.

Referenced by convertToPosixTime(), ndn::name::Component::fromTimestamp(), fromUnixTimestamp(), ndn::name::Component::toTimestamp(), and toUnixTimestamp().

◆ toUnixTimestamp()

◆ fromUnixTimestamp()

◆ convertToPosixTime()

static boost::posix_time::ptime ndn::time::convertToPosixTime ( const system_clock::time_point timePoint)
static

Definition at line 125 of file time.cpp.

References getUnixEpoch().

Referenced by toIsoExtendedString(), toIsoString(), and toString().

◆ toIsoString()

std::string ndn::time::toIsoString ( const system_clock::time_point timePoint)

Convert to the ISO 8601 string representation, basic format (YYYYMMDDTHHMMSS,fffffffff).

If timePoint does not contain any fractional seconds, the output format is YYYYMMDDTHHMMSS.

Examples:

  • with fractional nanoseconds: 20020131T100001,123456789
  • with fractional microseconds: 20020131T100001,123456
  • with fractional milliseconds: 20020131T100001,123
  • without fractional seconds: 20020131T100001

Definition at line 143 of file time.cpp.

References convertToPosixTime().

Referenced by ndn::security::v2::CertificateCache::insert(), ndn::security::operator<<(), and ndn::security::ValidityPeriod::wireEncode().

◆ toIsoExtendedString()

std::string ndn::time::toIsoExtendedString ( const system_clock::time_point timePoint)

Convert to the ISO 8601 string representation, extended format (YYYY-MM-DDTHH:MM:SS,fffffffff).

Definition at line 149 of file time.cpp.

References convertToPosixTime().

Referenced by ndn::security::v2::operator<<().

◆ convertToTimePoint()

static system_clock::time_point ndn::time::convertToTimePoint ( const boost::posix_time::ptime &  ptime)
static

Definition at line 155 of file time.cpp.

Referenced by fromIsoExtendedString(), fromIsoString(), and fromString().

◆ fromIsoString()

system_clock::time_point ndn::time::fromIsoString ( const std::string &  isoString)

Convert from the ISO 8601 basic string format (YYYYMMDDTHHMMSS,fffffffff) to the internal time format.

Examples of accepted strings:

  • with fractional nanoseconds: 20020131T100001,123456789
  • with fractional microseconds: 20020131T100001,123456
  • with fractional milliseconds: 20020131T100001,123
  • without fractional seconds: 20020131T100001

Definition at line 168 of file time.cpp.

References convertToTimePoint().

Referenced by ndn::security::ValidityPeriod::wireDecode().

◆ fromIsoExtendedString()

system_clock::time_point ndn::time::fromIsoExtendedString ( const std::string &  isoString)

Convert from the ISO 8601 extended string format (YYYY-MM-DDTHH:MM:SS,fffffffff) to the internal time format.

Definition at line 174 of file time.cpp.

References convertToTimePoint().

◆ toString()

std::string ndn::time::toString ( const system_clock::time_point timePoint,
const std::string &  format = "%Y-%m-%d %H:%M:%S",
const std::locale &  locale = std::locale("C") 
)

Convert time point to string with specified format.

By default, Y-m-d H:M:S is used, producing dates like 2014-04-10 22:51:00

Parameters
timePointtime point of system_clock
formatdesired output format (default: Y-m-d H:M:S)
localedesired locale (default: "C" locale)
See also
https://www.boost.org/doc/libs/1_65_1/doc/html/date_time/date_time_io.html#date_time.format_flags describes possible formatting flags

Definition at line 180 of file time.cpp.

References convertToPosixTime().

◆ fromString()

system_clock::time_point ndn::time::fromString ( const std::string &  timePointStr,
const std::string &  format = "%Y-%m-%d %H:%M:%S",
const std::locale &  locale = std::locale("C") 
)

Convert from string of specified format into time point.

By default, Y-m-d H:M:S is used, accepting dates like 2014-04-10 22:51:00

Parameters
timePointStrstring representing time point
formatinput output format (default: Y-m-d H:M:S)
localeinput locale (default: "C" locale)
See also
https://www.boost.org/doc/libs/1_65_1/doc/html/date_time/date_time_io.html#date_time.format_flags describes possible formatting flags

Definition at line 195 of file time.cpp.

References convertToTimePoint().

◆ abs()

template<typename Rep , typename Period , typename = std::enable_if_t<std::numeric_limits<Rep>::is_signed>>
constexpr duration<Rep, Period> ndn::time::abs ( duration< Rep, Period >  d)
Returns
the absolute value of the duration d
Note
The function does not participate in the overload resolution unless std::numeric_limits<Rep>::is_signed is true.

Definition at line 58 of file time.hpp.

Referenced by ndn::util::RttEstimator::addMeasurement(), ndn::security::v2::ValidationPolicySignedInterest::checkPolicy(), ndn::net::GenlFamilyResolver::GenlFamilyResolver(), ns3::AnnotatedTopologyReader::Read(), and ndn::net::updateInterfaceState().

Variable Documentation

◆ g_systemClock

shared_ptr<CustomSystemClock> ndn::time::g_systemClock
static

◆ g_steadyClock

shared_ptr<CustomSteadyClock> ndn::time::g_steadyClock
static