Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: src/platform/metrics/metrics_daemon.h

Issue 1799001: Log time between network drops -- from online to offline. (Closed) Base URL: ssh://git@chromiumos-git/chromeos
Patch Set: address review comments. Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef METRICS_DAEMON_H_ 5 #ifndef METRICS_DAEMON_H_
6 #define METRICS_DAEMON_H_ 6 #define METRICS_DAEMON_H_
7 7
8 #include <dbus/dbus-glib.h> 8 #include <dbus/dbus.h>
9 #include <sys/time.h>
10 #include <time.h> 9 #include <time.h>
11 10
12 class MetricsDaemon { 11 class MetricsDaemon {
13 12
14 public: 13 public:
15 MetricsDaemon() 14 MetricsDaemon()
16 : network_state_id_(kUnknownNetworkStateId) { 15 : testing_(false),
17 } 16 network_state_(kUnknownNetworkState),
17 network_state_changed_(0),
18 power_state_(kUnknownPowerState) {}
18 ~MetricsDaemon() {} 19 ~MetricsDaemon() {}
19 20
20 // Does all the work. If |run_as_daemon| is true, daemonize by forking. If 21 // Does all the work. If |run_as_daemon| is true, daemonizes by
21 // |testing| is true, log the stats instead of sending them to Chrome. 22 // forking. If |testing| is true, logs the stats instead of sending
23 // them to Chrome.
22 void Run(bool run_as_daemon, bool testing); 24 void Run(bool run_as_daemon, bool testing);
23 25
24 private: 26 private:
25 // Shared with Chrome for transport. 27 // The network states (see network_states.h).
26 static const char* kMetricsFilePath; 28 enum NetworkState {
27 static const int kMetricsMessageMaxLength = 4096; 29 kUnknownNetworkState = -1, // Initial/unknown network state.
28
29 // The network states. See network_states.h.
30 typedef enum {
31 // Initial/unknown network state id.
32 kUnknownNetworkStateId = -1,
33 #define STATE(name, capname) kNetworkState ## capname, 30 #define STATE(name, capname) kNetworkState ## capname,
34 #include "network_states.h" 31 #include "network_states.h"
35 kNumberNetworkStates 32 kNumberNetworkStates
36 } NetworkStateId; 33 };
37 34
38 typedef struct { 35 // The power states (see power_states.h).
39 const char* name; 36 enum PowerState {
40 const char* stat_name; 37 kUnknownPowerState = -1, // Initial/unknown power state.
41 } NetworkState; 38 #define STATE(name, capname) kPowerState ## capname,
39 #include "power_states.h"
40 kNumberPowerStates
41 };
42 42
43 // Initializes. 43 // Initializes.
44 void Init(bool testing); 44 void Init(bool testing);
45 45
46 // Creates the event loop and enters it. 46 // Creates the event loop and enters it.
47 void Loop(); 47 void Loop();
48 48
49 // Static callback for network events on DBus. 49 // D-Bus filter callback.
50 static void StaticNetSignalHandler(::DBusGProxy* proxy, const char* property, 50 static DBusHandlerResult MessageFilter(DBusConnection* connection,
51 const ::GValue* value, void* data); 51 DBusMessage* message,
52 void* user_data);
52 53
53 // Callback for network events on DBus. 54 // Processes network state change.
54 void NetSignalHandler(::DBusGProxy* proxy, const char* property, 55 void NetStateChanged(const char* state_name);
55 const ::GValue* value);
56 56
57 // This is called at each network state change. The new state is identified 57 // Given the state name, returns the state id.
58 // by the string @newstate. As a side effect, this method ships to Chrome 58 NetworkState LookupNetworkState(const char* state_name);
59 // (or prints to stdout when testing) the name and duration of the state
60 // that has ended.
61 void LogNetworkStateChange(const char* newstate);
62 59
63 // Given a string with the name of a state, returns the id for the state. 60 // Processes power state change.
64 NetworkStateId GetNetworkStateId(const char* state_name); 61 void PowerStateChanged(const char* state_name);
62
63 // Given the state name, returns the state id.
64 PowerState LookupPowerState(const char* state_name);
65 65
66 // Sends a stat to Chrome for transport to UMA (or prints it for 66 // Sends a stat to Chrome for transport to UMA (or prints it for
67 // testing). See MetricsLibrary::SendToChrome in metrics_library.h 67 // testing). See MetricsLibrary::SendToChrome in metrics_library.h
68 // for a description of the arguments. 68 // for a description of the arguments.
69 void PublishMetric(const char* name, int sample, 69 void PublishMetric(const char* name, int sample,
70 int min, int max, int nbuckets); 70 int min, int max, int nbuckets);
71 71
72 #if 0 72 // D-Bus message match strings.
73 // Fetches a name-value hash table from DBus. 73 static const char* dbus_matches_[];
74 bool GetProperties(::DBusGProxy* proxy, ::GHashTable** table);
75 74
76 // The type descriptor for a glib hash table. 75 // Array of network states.
77 GType hashtable_gtype; 76 static const char* network_states_[kNumberNetworkStates];
78 #endif
79 77
80 // Array of network states of interest. 78 // Array of power states.
81 static NetworkState network_states_[kNumberNetworkStates]; 79 static const char* power_states_[kNumberPowerStates];
82 80
83 bool testing_; // just testing 81 bool testing_; // just testing
84 NetworkStateId network_state_id_; // id of current state 82 NetworkState network_state_; // current network state
85 struct timeval network_state_start_; // when current state was entered 83 time_t network_state_changed_; // timestamp last net state change
84 PowerState power_state_; // current power state
86 }; 85 };
87 86
88 #endif // METRICS_DAEMON_H_ 87 #endif // METRICS_DAEMON_H_
OLDNEW
« no previous file with comments | « src/platform/metrics/marshal_void__string_boxed.list ('k') | src/platform/metrics/metrics_daemon.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698