910e62b5创建于 1月15日历史提交
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TOOLS_MEMORY_SIMULATOR_METRICS_PRINTER_H_
#define TOOLS_MEMORY_SIMULATOR_METRICS_PRINTER_H_

#include <memory>
#include <vector>

#include "base/time/time.h"
#include "tools/memory/simulator/metrics_provider.h"

namespace memory_simulator {

// Outputs memory stats in CSV format to stdout.
class MetricsPrinter {
 public:
  MetricsPrinter();
  ~MetricsPrinter();

  // Adds a metrics provider. This can only be called before the first call to
  // PrintHeader().
  void AddProvider(std::unique_ptr<MetricsProvider> provider);

  // Prints header row.
  void PrintHeader();

  // Prints stats row. This can only be called after PrintHeader() has been
  // called.
  void PrintStats();

 private:
  const base::TimeTicks start_time_ = base::TimeTicks::Now();

  bool did_print_header_ = false;

  std::vector<std::unique_ptr<MetricsProvider>> providers_;
};

}  // namespace memory_simulator

#endif  // TOOLS_MEMORY_SIMULATOR_METRICS_PRINTER_H_