// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This class exists to interpret the response from the metrics server.
#ifndef CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_
#define CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_
#pragma once
#include <string>
#include "base/basictypes.h"
class MetricsResponse {
public:
// Parses metrics response XML into the information we care about
// (how often to send metrics info, which info to send).
explicit MetricsResponse(const std::string& response_xml);
// True if the XML passed to the constructor was valid and parseable.
bool valid() { return valid_; }
// Each flag (except NONE) defined here represents one type of metrics
// event that the server is interested in.
enum CollectorType {
COLLECTOR_NONE = 0x0,
COLLECTOR_PROFILE = 0x1,
COLLECTOR_WINDOW = 0x2,
COLLECTOR_DOCUMENT = 0x4,
COLLECTOR_UI = 0x8
};
// This is the collection of CollectorTypes that are desired by the
// server, ORed together into one value.
int collectors() { return collectors_; }
// Returns true if the given CollectorType is desired by the server.
bool collector_active(CollectorType type) { return !!(collectors_ & type); }
// Returns the maximum number of event that the server wants in each
// metrics log sent. (If 0, no value was provided.)
int events() { return events_; }
// Returns the size of the time interval that the server wants us to include
// in each log (in seconds). (If 0, no value was provided.)
int interval() { return interval_; }
private:
bool valid_;
int collectors_;
int events_;
int interval_;
DISALLOW_COPY_AND_ASSIGN(MetricsResponse);
};
#endif // CHROME_BROWSER_METRICS_METRICS_RESPONSE_H_