OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 IdBase(StatsType type); // Only meant for derived classes. | 243 IdBase(StatsType type); // Only meant for derived classes. |
244 const StatsType type_; | 244 const StatsType type_; |
245 | 245 |
246 static const char kSeparator = '_'; | 246 static const char kSeparator = '_'; |
247 }; | 247 }; |
248 | 248 |
249 typedef rtc::scoped_refptr<IdBase> Id; | 249 typedef rtc::scoped_refptr<IdBase> Id; |
250 | 250 |
251 struct Value { | 251 struct Value { |
252 enum Type { | 252 enum Type { |
253 kInt, // int. | 253 kInt, // int. |
254 kInt64, // int64. | 254 kInt64, // int64_t. |
255 kFloat, // float. | 255 kFloat, // float. |
256 kString, // std::string | 256 kString, // std::string |
257 kStaticString, // const char*. | 257 kStaticString, // const char*. |
258 kBool, // bool. | 258 kBool, // bool. |
259 kId, // Id. | 259 kId, // Id. |
260 }; | 260 }; |
261 | 261 |
262 Value(StatsValueName name, int64 value, Type int_type); | 262 Value(StatsValueName name, int64_t value, Type int_type); |
263 Value(StatsValueName name, float f); | 263 Value(StatsValueName name, float f); |
264 Value(StatsValueName name, const std::string& value); | 264 Value(StatsValueName name, const std::string& value); |
265 Value(StatsValueName name, const char* value); | 265 Value(StatsValueName name, const char* value); |
266 Value(StatsValueName name, bool b); | 266 Value(StatsValueName name, bool b); |
267 Value(StatsValueName name, const Id& value); | 267 Value(StatsValueName name, const Id& value); |
268 | 268 |
269 ~Value(); | 269 ~Value(); |
270 | 270 |
271 // TODO(tommi): This compares name as well as value... | 271 // TODO(tommi): This compares name as well as value... |
272 // I think we should only need to compare the value part and | 272 // I think we should only need to compare the value part and |
273 // move the name part into a hash map. | 273 // move the name part into a hash map. |
274 bool Equals(const Value& other) const; | 274 bool Equals(const Value& other) const; |
275 | 275 |
276 // Comparison operators. Return true iff the current instance is of the | 276 // Comparison operators. Return true iff the current instance is of the |
277 // correct type and holds the same value. No conversion is performed so | 277 // correct type and holds the same value. No conversion is performed so |
278 // a string value of "123" is not equal to an int value of 123 and an int | 278 // a string value of "123" is not equal to an int value of 123 and an int |
279 // value of 123 is not equal to a float value of 123.0f. | 279 // value of 123 is not equal to a float value of 123.0f. |
280 // One exception to this is that types kInt and kInt64 can be compared and | 280 // One exception to this is that types kInt and kInt64 can be compared and |
281 // kString and kStaticString too. | 281 // kString and kStaticString too. |
282 bool operator==(const std::string& value) const; | 282 bool operator==(const std::string& value) const; |
283 bool operator==(const char* value) const; | 283 bool operator==(const char* value) const; |
284 bool operator==(int64 value) const; | 284 bool operator==(int64_t value) const; |
285 bool operator==(bool value) const; | 285 bool operator==(bool value) const; |
286 bool operator==(float value) const; | 286 bool operator==(float value) const; |
287 bool operator==(const Id& value) const; | 287 bool operator==(const Id& value) const; |
288 | 288 |
289 // Getters that allow getting the native value directly. | 289 // Getters that allow getting the native value directly. |
290 // The caller must know the type beforehand or else hit a check. | 290 // The caller must know the type beforehand or else hit a check. |
291 int int_val() const; | 291 int int_val() const; |
292 int64 int64_val() const; | 292 int64_t int64_val() const; |
293 float float_val() const; | 293 float float_val() const; |
294 const char* static_string_val() const; | 294 const char* static_string_val() const; |
295 const std::string& string_val() const; | 295 const std::string& string_val() const; |
296 bool bool_val() const; | 296 bool bool_val() const; |
297 const Id& id_val() const; | 297 const Id& id_val() const; |
298 | 298 |
299 // Returns the string representation of |name|. | 299 // Returns the string representation of |name|. |
300 const char* display_name() const; | 300 const char* display_name() const; |
301 | 301 |
302 // Converts the native value to a string representation of the value. | 302 // Converts the native value to a string representation of the value. |
303 std::string ToString() const; | 303 std::string ToString() const; |
304 | 304 |
305 Type type() const { return type_; } | 305 Type type() const { return type_; } |
306 | 306 |
307 // TODO(tommi): Move |name| and |display_name| out of the Value struct. | 307 // TODO(tommi): Move |name| and |display_name| out of the Value struct. |
308 const StatsValueName name; | 308 const StatsValueName name; |
309 | 309 |
310 private: | 310 private: |
311 const Type type_; | 311 const Type type_; |
312 // TODO(tommi): Use C++ 11 union and make value_ const. | 312 // TODO(tommi): Use C++ 11 union and make value_ const. |
313 union InternalType { | 313 union InternalType { |
314 int int_; | 314 int int_; |
315 int64 int64_; | 315 int64_t int64_; |
316 float float_; | 316 float float_; |
317 bool bool_; | 317 bool bool_; |
318 std::string* string_; | 318 std::string* string_; |
319 const char* static_string_; | 319 const char* static_string_; |
320 Id* id_; | 320 Id* id_; |
321 } value_; | 321 } value_; |
322 | 322 |
323 private: | 323 private: |
324 RTC_DISALLOW_COPY_AND_ASSIGN(Value); | 324 RTC_DISALLOW_COPY_AND_ASSIGN(Value); |
325 }; | 325 }; |
(...skipping 22 matching lines...) Expand all Loading... |
348 StatsType type() const { return id_->type(); } | 348 StatsType type() const { return id_->type(); } |
349 double timestamp() const { return timestamp_; } | 349 double timestamp() const { return timestamp_; } |
350 void set_timestamp(double t) { timestamp_ = t; } | 350 void set_timestamp(double t) { timestamp_ = t; } |
351 bool empty() const { return values_.empty(); } | 351 bool empty() const { return values_.empty(); } |
352 const Values& values() const { return values_; } | 352 const Values& values() const { return values_; } |
353 | 353 |
354 const char* TypeToString() const; | 354 const char* TypeToString() const; |
355 | 355 |
356 void AddString(StatsValueName name, const std::string& value); | 356 void AddString(StatsValueName name, const std::string& value); |
357 void AddString(StatsValueName name, const char* value); | 357 void AddString(StatsValueName name, const char* value); |
358 void AddInt64(StatsValueName name, int64 value); | 358 void AddInt64(StatsValueName name, int64_t value); |
359 void AddInt(StatsValueName name, int value); | 359 void AddInt(StatsValueName name, int value); |
360 void AddFloat(StatsValueName name, float value); | 360 void AddFloat(StatsValueName name, float value); |
361 void AddBoolean(StatsValueName name, bool value); | 361 void AddBoolean(StatsValueName name, bool value); |
362 void AddId(StatsValueName name, const Id& value); | 362 void AddId(StatsValueName name, const Id& value); |
363 | 363 |
364 const Value* FindValue(StatsValueName name) const; | 364 const Value* FindValue(StatsValueName name) const; |
365 | 365 |
366 private: | 366 private: |
367 // The unique identifier for this object. | 367 // The unique identifier for this object. |
368 // This is used as a key for this report in ordered containers, | 368 // This is used as a key for this report in ordered containers, |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 StatsReport* Find(const StatsReport::Id& id); | 408 StatsReport* Find(const StatsReport::Id& id); |
409 | 409 |
410 private: | 410 private: |
411 Container list_; | 411 Container list_; |
412 rtc::ThreadChecker thread_checker_; | 412 rtc::ThreadChecker thread_checker_; |
413 }; | 413 }; |
414 | 414 |
415 } // namespace webrtc | 415 } // namespace webrtc |
416 | 416 |
417 #endif // TALK_APP_WEBRTC_STATSTYPES_H_ | 417 #endif // TALK_APP_WEBRTC_STATSTYPES_H_ |
OLD | NEW |