| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef CHROME_BROWSER_PERFORMANCE_MONITOR_KEY_BUILDER_H_ | |
| 6 #define CHROME_BROWSER_PERFORMANCE_MONITOR_KEY_BUILDER_H_ | |
| 7 | |
| 8 #include <map> | |
| 9 | |
| 10 #include "chrome/browser/performance_monitor/event.h" | |
| 11 #include "chrome/browser/performance_monitor/metric.h" | |
| 12 | |
| 13 namespace performance_monitor { | |
| 14 | |
| 15 struct RecentKey { | |
| 16 RecentKey(const std::string& recent_time, | |
| 17 MetricType recent_type, | |
| 18 const std::string& recent_activity); | |
| 19 ~RecentKey(); | |
| 20 | |
| 21 const std::string time; | |
| 22 const MetricType type; | |
| 23 const std::string activity; | |
| 24 }; | |
| 25 | |
| 26 struct MaxValueKey { | |
| 27 MaxValueKey(MetricType max_value_type, | |
| 28 const std::string& max_value_activity) | |
| 29 : type(max_value_type), | |
| 30 activity(max_value_activity) {} | |
| 31 ~MaxValueKey() {} | |
| 32 | |
| 33 const MetricType type; | |
| 34 const std::string activity; | |
| 35 }; | |
| 36 | |
| 37 struct MetricKey { | |
| 38 MetricKey(const std::string& metric_time, | |
| 39 MetricType metric_type, | |
| 40 const std::string& metric_activity); | |
| 41 ~MetricKey(); | |
| 42 | |
| 43 const std::string time; | |
| 44 const MetricType type; | |
| 45 const std::string activity; | |
| 46 }; | |
| 47 | |
| 48 // This class is responsible for building the keys which are used internally by | |
| 49 // PerformanceMonitor's database. These keys should only be referenced by the | |
| 50 // database, and should not be used externally. | |
| 51 class KeyBuilder { | |
| 52 public: | |
| 53 KeyBuilder(); | |
| 54 ~KeyBuilder(); | |
| 55 | |
| 56 // Key Creation: Create the keys for different databases. The schemas are | |
| 57 // listed with the methods. A '-' in the schema represents kDelimeter. | |
| 58 | |
| 59 // Key Schema: <Time> | |
| 60 std::string CreateActiveIntervalKey(const base::Time& time); | |
| 61 | |
| 62 // Key Schema: <Metric>-<Time>-<Activity> | |
| 63 std::string CreateMetricKey(const base::Time& time, | |
| 64 const MetricType type, | |
| 65 const std::string& activity); | |
| 66 | |
| 67 // Key Schema: <Time>-<Event Type> | |
| 68 std::string CreateEventKey(const base::Time& time, const EventType type); | |
| 69 | |
| 70 // Key Schema: <Time>-<Metric>-<Activity> | |
| 71 std::string CreateRecentKey(const base::Time& time, | |
| 72 const MetricType type, | |
| 73 const std::string& activity); | |
| 74 | |
| 75 // Key Schema: <Activity>-<Metric> | |
| 76 std::string CreateRecentMapKey(const MetricType type, | |
| 77 const std::string& activity); | |
| 78 | |
| 79 std::string CreateMaxValueKey(const MetricType type, | |
| 80 const std::string& activity); | |
| 81 | |
| 82 EventType EventKeyToEventType(const std::string& key); | |
| 83 RecentKey SplitRecentKey(const std::string& key); | |
| 84 MetricKey SplitMetricKey(const std::string& key); | |
| 85 | |
| 86 private: | |
| 87 // Populate the maps from [Event, Metric]Type to key characters. | |
| 88 void PopulateKeyMaps(); | |
| 89 | |
| 90 std::map<EventType, int> event_type_to_event_key_char_; | |
| 91 std::map<int, EventType> event_key_char_to_event_type_; | |
| 92 std::map<MetricType, int> metric_type_to_metric_key_char_; | |
| 93 std::map<int, MetricType> metric_key_char_to_metric_type_; | |
| 94 }; | |
| 95 | |
| 96 } // namespace performance_monitor | |
| 97 | |
| 98 #endif // CHROME_BROWSER_PERFORMANCE_MONITOR_KEY_BUILDER_H_ | |
| OLD | NEW |