OLD | NEW |
1 // | 1 // |
2 // Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 // Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. |
3 // | 3 // |
4 // Use of this source code is governed by a BSD-style license | 4 // Use of this source code is governed by a BSD-style license |
5 // that can be found in the LICENSE file in the root of the source | 5 // that can be found in the LICENSE file in the root of the source |
6 // tree. An additional intellectual property rights grant can be found | 6 // tree. An additional intellectual property rights grant can be found |
7 // in the file PATENTS. All contributing project authors may | 7 // in the file PATENTS. All contributing project authors may |
8 // be found in the AUTHORS file in the root of the source tree. | 8 // be found in the AUTHORS file in the root of the source tree. |
9 // | 9 // |
10 | 10 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 | 146 |
147 // Deprecated. | 147 // Deprecated. |
148 // The histogram is constructed/found for each call. | 148 // The histogram is constructed/found for each call. |
149 // May be used for histograms with infrequent updates. | 149 // May be used for histograms with infrequent updates. |
150 #define RTC_HISTOGRAM_COMMON_BLOCK_SLOW(name, sample, factory_get_invocation) \ | 150 #define RTC_HISTOGRAM_COMMON_BLOCK_SLOW(name, sample, factory_get_invocation) \ |
151 do { \ | 151 do { \ |
152 webrtc::metrics::Histogram* histogram_pointer = factory_get_invocation; \ | 152 webrtc::metrics::Histogram* histogram_pointer = factory_get_invocation; \ |
153 webrtc::metrics::HistogramAdd(histogram_pointer, name, sample); \ | 153 webrtc::metrics::HistogramAdd(histogram_pointer, name, sample); \ |
154 } while (0) | 154 } while (0) |
155 | 155 |
| 156 |
| 157 // Helper macros. |
| 158 // Macros for calling a histogram with varying name (e.g. when using a metric |
| 159 // in different modes such as real-time vs screenshare). |
| 160 #define RTC_HISTOGRAMS_COUNTS_100(index, name, sample) \ |
| 161 RTC_HISTOGRAMS_COMMON(index, name, sample, \ |
| 162 RTC_HISTOGRAM_COUNTS(name, sample, 1, 100, 50)) |
| 163 |
| 164 #define RTC_HISTOGRAMS_COUNTS_200(index, name, sample) \ |
| 165 RTC_HISTOGRAMS_COMMON(index, name, sample, \ |
| 166 RTC_HISTOGRAM_COUNTS(name, sample, 1, 200, 50)) |
| 167 |
| 168 #define RTC_HISTOGRAMS_COUNTS_1000(index, name, sample) \ |
| 169 RTC_HISTOGRAMS_COMMON(index, name, sample, \ |
| 170 RTC_HISTOGRAM_COUNTS(name, sample, 1, 1000, 50)) |
| 171 |
| 172 #define RTC_HISTOGRAMS_COUNTS_10000(index, name, sample) \ |
| 173 RTC_HISTOGRAMS_COMMON(index, name, sample, \ |
| 174 RTC_HISTOGRAM_COUNTS(name, sample, 1, 10000, 50)) |
| 175 |
| 176 #define RTC_HISTOGRAMS_COUNTS_100000(index, name, sample) \ |
| 177 RTC_HISTOGRAMS_COMMON(index, name, sample, \ |
| 178 RTC_HISTOGRAM_COUNTS(name, sample, 1, 100000, 50)) |
| 179 |
| 180 #define RTC_HISTOGRAMS_ENUMERATION(index, name, sample, boundary) \ |
| 181 RTC_HISTOGRAMS_COMMON(index, name, sample, \ |
| 182 RTC_HISTOGRAM_ENUMERATION(name, sample, boundary)) |
| 183 |
| 184 #define RTC_HISTOGRAMS_PERCENTAGE(index, name, sample) \ |
| 185 RTC_HISTOGRAMS_COMMON(index, name, sample, \ |
| 186 RTC_HISTOGRAM_PERCENTAGE(name, sample)) |
| 187 |
| 188 #define RTC_HISTOGRAMS_COMMON(index, name, sample, macro_invocation) \ |
| 189 do { \ |
| 190 RTC_DCHECK(index >= 0); \ |
| 191 RTC_DCHECK(index <= 2); \ |
| 192 switch (index) { \ |
| 193 case 0: \ |
| 194 macro_invocation; \ |
| 195 break; \ |
| 196 case 1: \ |
| 197 macro_invocation; \ |
| 198 break; \ |
| 199 case 2: \ |
| 200 macro_invocation; \ |
| 201 break; \ |
| 202 default: \ |
| 203 RTC_NOTREACHED(); \ |
| 204 } \ |
| 205 } while (0) |
| 206 |
| 207 |
156 namespace webrtc { | 208 namespace webrtc { |
157 namespace metrics { | 209 namespace metrics { |
158 | 210 |
159 // Time that should have elapsed for stats that are gathered once per call. | 211 // Time that should have elapsed for stats that are gathered once per call. |
160 enum { kMinRunTimeInSeconds = 10 }; | 212 enum { kMinRunTimeInSeconds = 10 }; |
161 | 213 |
162 class Histogram; | 214 class Histogram; |
163 | 215 |
164 // Functions for getting pointer to histogram (constructs or finds the named | 216 // Functions for getting pointer to histogram (constructs or finds the named |
165 // histogram). | 217 // histogram). |
(...skipping 10 matching lines...) Expand all Loading... |
176 // Function for adding a |sample| to a histogram. | 228 // Function for adding a |sample| to a histogram. |
177 // |name| can be used to verify that it matches the histogram name. | 229 // |name| can be used to verify that it matches the histogram name. |
178 void HistogramAdd( | 230 void HistogramAdd( |
179 Histogram* histogram_pointer, const std::string& name, int sample); | 231 Histogram* histogram_pointer, const std::string& name, int sample); |
180 | 232 |
181 } // namespace metrics | 233 } // namespace metrics |
182 } // namespace webrtc | 234 } // namespace webrtc |
183 | 235 |
184 #endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_METRICS_H_ | 236 #endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_METRICS_H_ |
185 | 237 |
OLD | NEW |