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 |