diff options
Diffstat (limited to 'stats/rtc_stats.cc')
-rw-r--r-- | stats/rtc_stats.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/stats/rtc_stats.cc b/stats/rtc_stats.cc index 59de664c0e..4895edc738 100644 --- a/stats/rtc_stats.cc +++ b/stats/rtc_stats.cc @@ -65,6 +65,20 @@ std::string VectorOfStringsToString(const std::vector<T>& strings) { } template <typename T> +std::string MapToString(const std::map<std::string, T>& map) { + rtc::StringBuilder sb; + sb << "{"; + const char* separator = ""; + for (const auto& element : map) { + sb << separator << rtc::ToString(element.first) << ":" + << rtc::ToString(element.second); + separator = ","; + } + sb << "}"; + return sb.Release(); +} + +template <typename T> std::string ToStringAsDouble(const T value) { // JSON represents numbers as floating point numbers with about 15 decimal // digits of precision. @@ -88,6 +102,20 @@ std::string VectorToStringAsDouble(const std::vector<T>& vector) { return sb.Release(); } +template <typename T> +std::string MapToStringAsDouble(const std::map<std::string, T>& map) { + rtc::StringBuilder sb; + sb << "{"; + const char* separator = ""; + for (const auto& element : map) { + sb << separator << "\"" << rtc::ToString(element.first) + << "\":" << ToStringAsDouble(element.second); + separator = ","; + } + sb << "}"; + return sb.Release(); +} + } // namespace bool RTCStats::operator==(const RTCStats& other) const { @@ -248,6 +276,18 @@ WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector<std::string>, false, VectorOfStringsToString(value_), VectorOfStringsToString(value_)); +WEBRTC_DEFINE_RTCSTATSMEMBER(rtc_stats_internal::MapStringUint64, + kMapStringUint64, + false, + false, + MapToString(value_), + MapToStringAsDouble(value_)); +WEBRTC_DEFINE_RTCSTATSMEMBER(rtc_stats_internal::MapStringDouble, + kMapStringDouble, + false, + false, + MapToString(value_), + MapToStringAsDouble(value_)); template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) RTCNonStandardStatsMember<bool>; |