| Index: src/platform/metrics/metrics_daemon.h
|
| diff --git a/src/platform/metrics/metrics_daemon.h b/src/platform/metrics/metrics_daemon.h
|
| index b18e3667e1868265dd86bd4af21e81e4999c7a02..23f0eb25fd804db5c9aa575efb872923e219dd61 100644
|
| --- a/src/platform/metrics/metrics_daemon.h
|
| +++ b/src/platform/metrics/metrics_daemon.h
|
| @@ -5,40 +5,40 @@
|
| #ifndef METRICS_DAEMON_H_
|
| #define METRICS_DAEMON_H_
|
|
|
| -#include <dbus/dbus-glib.h>
|
| -#include <sys/time.h>
|
| +#include <dbus/dbus.h>
|
| #include <time.h>
|
|
|
| class MetricsDaemon {
|
|
|
| public:
|
| MetricsDaemon()
|
| - : network_state_id_(kUnknownNetworkStateId) {
|
| - }
|
| + : testing_(false),
|
| + network_state_(kUnknownNetworkState),
|
| + network_state_changed_(0),
|
| + power_state_(kUnknownPowerState) {}
|
| ~MetricsDaemon() {}
|
|
|
| - // Does all the work. If |run_as_daemon| is true, daemonize by forking. If
|
| - // |testing| is true, log the stats instead of sending them to Chrome.
|
| + // Does all the work. If |run_as_daemon| is true, daemonizes by
|
| + // forking. If |testing| is true, logs the stats instead of sending
|
| + // them to Chrome.
|
| void Run(bool run_as_daemon, bool testing);
|
|
|
| private:
|
| - // Shared with Chrome for transport.
|
| - static const char* kMetricsFilePath;
|
| - static const int kMetricsMessageMaxLength = 4096;
|
| -
|
| - // The network states. See network_states.h.
|
| - typedef enum {
|
| - // Initial/unknown network state id.
|
| - kUnknownNetworkStateId = -1,
|
| + // The network states (see network_states.h).
|
| + enum NetworkState {
|
| + kUnknownNetworkState = -1, // Initial/unknown network state.
|
| #define STATE(name, capname) kNetworkState ## capname,
|
| #include "network_states.h"
|
| kNumberNetworkStates
|
| - } NetworkStateId;
|
| + };
|
|
|
| - typedef struct {
|
| - const char* name;
|
| - const char* stat_name;
|
| - } NetworkState;
|
| + // The power states (see power_states.h).
|
| + enum PowerState {
|
| + kUnknownPowerState = -1, // Initial/unknown power state.
|
| +#define STATE(name, capname) kPowerState ## capname,
|
| +#include "power_states.h"
|
| + kNumberPowerStates
|
| + };
|
|
|
| // Initializes.
|
| void Init(bool testing);
|
| @@ -46,22 +46,22 @@ class MetricsDaemon {
|
| // Creates the event loop and enters it.
|
| void Loop();
|
|
|
| - // Static callback for network events on DBus.
|
| - static void StaticNetSignalHandler(::DBusGProxy* proxy, const char* property,
|
| - const ::GValue* value, void* data);
|
| + // D-Bus filter callback.
|
| + static DBusHandlerResult MessageFilter(DBusConnection* connection,
|
| + DBusMessage* message,
|
| + void* user_data);
|
|
|
| - // Callback for network events on DBus.
|
| - void NetSignalHandler(::DBusGProxy* proxy, const char* property,
|
| - const ::GValue* value);
|
| + // Processes network state change.
|
| + void NetStateChanged(const char* state_name);
|
|
|
| - // This is called at each network state change. The new state is identified
|
| - // by the string @newstate. As a side effect, this method ships to Chrome
|
| - // (or prints to stdout when testing) the name and duration of the state
|
| - // that has ended.
|
| - void LogNetworkStateChange(const char* newstate);
|
| + // Given the state name, returns the state id.
|
| + NetworkState LookupNetworkState(const char* state_name);
|
|
|
| - // Given a string with the name of a state, returns the id for the state.
|
| - NetworkStateId GetNetworkStateId(const char* state_name);
|
| + // Processes power state change.
|
| + void PowerStateChanged(const char* state_name);
|
| +
|
| + // Given the state name, returns the state id.
|
| + PowerState LookupPowerState(const char* state_name);
|
|
|
| // Sends a stat to Chrome for transport to UMA (or prints it for
|
| // testing). See MetricsLibrary::SendToChrome in metrics_library.h
|
| @@ -69,20 +69,19 @@ class MetricsDaemon {
|
| void PublishMetric(const char* name, int sample,
|
| int min, int max, int nbuckets);
|
|
|
| -#if 0
|
| - // Fetches a name-value hash table from DBus.
|
| - bool GetProperties(::DBusGProxy* proxy, ::GHashTable** table);
|
| + // D-Bus message match strings.
|
| + static const char* dbus_matches_[];
|
|
|
| - // The type descriptor for a glib hash table.
|
| - GType hashtable_gtype;
|
| -#endif
|
| + // Array of network states.
|
| + static const char* network_states_[kNumberNetworkStates];
|
|
|
| - // Array of network states of interest.
|
| - static NetworkState network_states_[kNumberNetworkStates];
|
| + // Array of power states.
|
| + static const char* power_states_[kNumberPowerStates];
|
|
|
| - bool testing_; // just testing
|
| - NetworkStateId network_state_id_; // id of current state
|
| - struct timeval network_state_start_; // when current state was entered
|
| + bool testing_; // just testing
|
| + NetworkState network_state_; // current network state
|
| + time_t network_state_changed_; // timestamp last net state change
|
| + PowerState power_state_; // current power state
|
| };
|
|
|
| #endif // METRICS_DAEMON_H_
|
|
|