userver: userver/utils/bytes_per_second.hpp Source File
Loading...
Searching...
No Matches
bytes_per_second.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/utils/bytes_per_second.hpp
4/// @brief @copybrief utils::BytesPerSecond
5/// @ingroup userver_universal
6
7#include <string>
8
9#include <userver/formats/parse/to.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace utils {
14
15/// @ingroup userver_universal
16///
17/// @brief Data type that represents `bytes per second` unit
18enum class BytesPerSecond : long long {};
19
20constexpr long long ToLongLong(BytesPerSecond x) { return static_cast<long long>(x); }
21
22constexpr bool operator==(BytesPerSecond lhs, BytesPerSecond rhs) { return ToLongLong(lhs) == ToLongLong(rhs); }
23
24/// Understands all the date-rate unit suffixes from
25/// https://en.wikipedia.org/wiki/Data-rate_units#Conversion_table
26BytesPerSecond StringToBytesPerSecond(const std::string& data);
27
28template <class Value>
29BytesPerSecond Parse(const Value& v, formats::parse::To<BytesPerSecond>) {
30 return utils::StringToBytesPerSecond(v.template As<std::string>());
31}
32
33} // namespace utils
34
35USERVER_NAMESPACE_END