aboutsummaryrefslogtreecommitdiff
path: root/stats/rtc_stats.cc
diff options
context:
space:
mode:
Diffstat (limited to 'stats/rtc_stats.cc')
-rw-r--r--stats/rtc_stats.cc40
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>;