From 36fd351562c24eba9a31715a26aff2d8a3647f49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Wed, 10 May 2023 16:14:50 +0200 Subject: [PATCH] [Stats] Align RTCStatsMember closer to absl::optional. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step 1: Make reading RTCStatsMember look the same as reading absl::optional (this CL). Step 2: Migrate uses of "is_defined()" to "has_value()". Step 3: Delete "is_defined()". Step 4: Make RTCStatsMember+Interface an implementation detail of RTCStats::Members(), only used for abstract iteration ("for each metric"). Lazy instantiate it upon Members(). Step 5: Replace RTCStatsMember with absl::optional for use in RTCStats dictionaries (rtcstats_objects.h/cc). Bug: webrtc:15164 Change-Id: I5a2c9fe56707e3c7d89e8ea62fb37171ae806a7c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/304840 Commit-Queue: Henrik Boström Reviewed-by: Harald Alvestrand Cr-Commit-Position: refs/heads/main@{#40048} --- api/stats/rtc_stats.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/api/stats/rtc_stats.h b/api/stats/rtc_stats.h index 5cb97ccbee..30a725bb66 100644 --- a/api/stats/rtc_stats.h +++ b/api/stats/rtc_stats.h @@ -353,7 +353,12 @@ class RTCStatsMember : public RTCStatsMemberInterface { return value_.value(); } - // Value getters. + // Getter methods that look the same as absl::optional. Please prefer these + // in order to unblock replacing RTCStatsMember with absl::optional in + // the future (https://crbug.com/webrtc/15164). + bool has_value() const { return value_.has_value(); } + const T& value() const { return value_.value(); } + T& value() { return value_.value(); } T& operator*() { RTC_DCHECK(value_); return *value_; @@ -362,8 +367,6 @@ class RTCStatsMember : public RTCStatsMemberInterface { RTC_DCHECK(value_); return *value_; } - - // Value getters, arrow operator. T* operator->() { RTC_DCHECK(value_); return &(*value_);