userver: proto_structs::Duration Class Reference
Loading...
Searching...
No Matches
proto_structs::Duration Class Reference

#include </data/code/userver/libraries/proto-structs/include/userver/proto-structs/duration.hpp>

Detailed Description

Type to represent google.protobuf.Duration in proto structs.

This type is organized in the same way as its protobuf counterpart and allows for the same range of values (approximately +-10'000 years) as described here https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/duration.proto .

Definition at line 27 of file duration.hpp.

Public Types

using ProtobufMessage = ::google::protobuf::Duration
 

Public Member Functions

constexpr Duration ()=default
 Creates zero duration.
 
constexpr Duration (const std::chrono::seconds &seconds, const std::chrono::nanoseconds &nanos)
 Creates duration from seconds and nanos which are the fractions of second (from -999'999'999 to 999'999'999) of the same sign as seconds.
 
template<typename TRep, typename TPeriod>
constexpr Duration (const std::chrono::duration< TRep, TPeriod > &duration)
 Creates duration.
 
 Duration (utils::impl::InternalTag, std::int64_t seconds, std::int32_t nanos)
 
const std::chrono::seconds & Seconds () const noexcept
 Returns seconds.
 
const std::chrono::nanoseconds & Nanos () const noexcept
 Returns fractions of second (from -999'999'999 to 999'999'999).
 
template<typename TDuration>
requires ::meta::kIsInstantiationOf< std::chrono::duration, TDuration > constexpr TDuration ToChronoDuration () const noexcept
 Converts duration to std::chrono::duration.
 
std::chrono::nanoseconds ToNanos () const noexcept
 Converts duration to std::chrono::nanoseconds.
 
std::chrono::microseconds ToMicros () const noexcept
 Converts duration to std::chrono::microseconds.
 
std::chrono::milliseconds ToMillis () const noexcept
 Converts duration to std::chrono::milliseconds.
 
std::chrono::seconds ToSeconds () const noexcept
 Converts duration to std::chrono::seconds. Simply returns stored seconds, added for completeness.
 
template<typename TDuration>
requires ::meta::kIsInstantiationOf< std::chrono::duration, TDuration > constexpr bool FitsInChronoDuration () const noexcept
 Returns true if duration value fits in to the std::chrono::duration type.
 
template<typename TDuration>
requires ::meta::kIsInstantiationOf< std::chrono::duration, TDuration > constexpr operator TDuration () const noexcept
 Explicit conversion to std::chrono::duration.
 
auto operator<=> (const Duration &) const =default
 Default three-way comparison operator.
 

Static Public Member Functions

static constexpr Duration Min () noexcept
 Returns minimum allowed duration.
 
static constexpr Duration Max () noexcept
 Returns maximum allowed duration.
 
static constexpr bool IsValid (const std::chrono::seconds &seconds, const std::chrono::nanoseconds &nanos) noexcept
 Returns true if seconds and nanos represent a valid google.protobuf.Duration value.
 

Static Public Attributes

static constexpr std::chrono::seconds kMinSeconds {-315'576'000'000LL}
 Minimum allowed number of seconds.
 
static constexpr std::chrono::seconds kMaxSeconds {315'576'000'000LL}
 Maximum allowed number of seconds.
 

Member Typedef Documentation

◆ ProtobufMessage

using proto_structs::Duration::ProtobufMessage = ::google::protobuf::Duration

Definition at line 29 of file duration.hpp.

Constructor & Destructor Documentation

◆ Duration() [1/3]

proto_structs::Duration::Duration ( const std::chrono::seconds & seconds,
const std::chrono::nanoseconds & nanos )
inlineconstexpr

Creates duration from seconds and nanos which are the fractions of second (from -999'999'999 to 999'999'999) of the same sign as seconds.

Exceptions
ValueErrorif seconds and nanos does not have the same sign (when seconds is not 0) or outside the allowed range: [-315'576'000'000, 315'576'000'000] for seconds and [-999'999'999, 999'999'999] for nanos.

Definition at line 47 of file duration.hpp.

◆ Duration() [2/3]

template<typename TRep, typename TPeriod>
proto_structs::Duration::Duration ( const std::chrono::duration< TRep, TPeriod > & duration)
inlineconstexpr

Creates duration.

Exceptions
ValueErrorif duration is outside the allowed range.

Definition at line 57 of file duration.hpp.

◆ Duration() [3/3]

proto_structs::Duration::Duration ( utils::impl::InternalTag ,
std::int64_t seconds,
std::int32_t nanos )

Definition at line 12 of file duration.cpp.

Member Function Documentation

◆ FitsInChronoDuration()

template<typename TDuration>
requires ::meta::kIsInstantiationOf< std::chrono::duration, TDuration > constexpr bool proto_structs::Duration::FitsInChronoDuration ( ) const
inlinenodiscardconstexprnoexcept

Returns true if duration value fits in to the std::chrono::duration type.

Template Parameters
TDurationstd::chrono::duration type

Definition at line 121 of file duration.hpp.

◆ IsValid()

static constexpr bool proto_structs::Duration::IsValid ( const std::chrono::seconds & seconds,
const std::chrono::nanoseconds & nanos )
inlinestaticnodiscardconstexprnoexcept

Returns true if seconds and nanos represent a valid google.protobuf.Duration value.

Definition at line 179 of file duration.hpp.

◆ Max()

static constexpr Duration proto_structs::Duration::Max ( )
inlinestaticnodiscardconstexprnoexcept

Returns maximum allowed duration.

Definition at line 170 of file duration.hpp.

◆ Min()

static constexpr Duration proto_structs::Duration::Min ( )
inlinestaticnodiscardconstexprnoexcept

Returns minimum allowed duration.

Definition at line 162 of file duration.hpp.

◆ Nanos()

const std::chrono::nanoseconds & proto_structs::Duration::Nanos ( ) const
inlinenodiscardnoexcept

Returns fractions of second (from -999'999'999 to 999'999'999).

Definition at line 76 of file duration.hpp.

◆ operator TDuration()

template<typename TDuration>
requires ::meta::kIsInstantiationOf< std::chrono::duration, TDuration > constexpr proto_structs::Duration::operator TDuration ( ) const
inlinenodiscardconstexprnoexcept

Explicit conversion to std::chrono::duration.

Warning
If stored value does not fit in the std::chrono::duration type it is capped at std::chrono::duration min/max value.

Definition at line 154 of file duration.hpp.

◆ Seconds()

const std::chrono::seconds & proto_structs::Duration::Seconds ( ) const
inlinenodiscardnoexcept

Returns seconds.

Definition at line 73 of file duration.hpp.

◆ ToChronoDuration()

template<typename TDuration>
requires ::meta::kIsInstantiationOf< std::chrono::duration, TDuration > constexpr TDuration proto_structs::Duration::ToChronoDuration ( ) const
inlinenodiscardconstexprnoexcept

Converts duration to std::chrono::duration.

Template Parameters
TDurationstd::chrono::duration type
Warning
If stored value does not fit in the std::chrono::duration type it is capped at std::chrono::duration min/max value.

Definition at line 84 of file duration.hpp.

◆ ToMicros()

std::chrono::microseconds proto_structs::Duration::ToMicros ( ) const
inlinenodiscardnoexcept

Converts duration to std::chrono::microseconds.

Definition at line 100 of file duration.hpp.

◆ ToMillis()

std::chrono::milliseconds proto_structs::Duration::ToMillis ( ) const
inlinenodiscardnoexcept

Converts duration to std::chrono::milliseconds.

Definition at line 107 of file duration.hpp.

◆ ToNanos()

std::chrono::nanoseconds proto_structs::Duration::ToNanos ( ) const
inlinenodiscardnoexcept

Converts duration to std::chrono::nanoseconds.

Warning
If stored value does not fit in the std::chrono::nanoseconds type it is capped at std::chrono::nanoseconds min/max value.

Definition at line 95 of file duration.hpp.

◆ ToSeconds()

std::chrono::seconds proto_structs::Duration::ToSeconds ( ) const
inlinenodiscardnoexcept

Converts duration to std::chrono::seconds. Simply returns stored seconds, added for completeness.

Definition at line 115 of file duration.hpp.

Member Data Documentation

◆ kMaxSeconds

std::chrono::seconds proto_structs::Duration::kMaxSeconds {315'576'000'000LL}
staticconstexpr

Maximum allowed number of seconds.

Note
Appoximately 10'000 years.

Definition at line 37 of file duration.hpp.

◆ kMinSeconds

std::chrono::seconds proto_structs::Duration::kMinSeconds {-315'576'000'000LL}
staticconstexpr

Minimum allowed number of seconds.

Note
Appoximately -10'000 years.

Definition at line 33 of file duration.hpp.


The documentation for this class was generated from the following files: