// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TRUNKS_TRUNKS_METRICS_H_
#define TRUNKS_TRUNKS_METRICS_H_

#include <string>

#include <metrics/metrics_library.h>

#include "trunks/tpm_generated.h"

namespace trunks {

// This class provides wrapping functions for callers to report UMAs of
// `trunks`.
// TODO(chingkang): Add unittest for this.
class TrunksMetrics {
 public:
  TrunksMetrics() = default;
  ~TrunksMetrics() = default;

  // Not copyable or movable.
  TrunksMetrics(const TrunksMetrics&) = delete;
  TrunksMetrics& operator=(const TrunksMetrics&) = delete;
  TrunksMetrics(TrunksMetrics&&) = delete;
  TrunksMetrics& operator=(TrunksMetrics&&) = delete;

  // This function reports the command code and the time of the first writing
  // or reading timeout. So it should only be called once.
  bool ReportTpmHandleTimeoutCommandAndTime(int error_result,
                                            TPM_CC command_code);

  // This function reports the TPM command error code.
  void ReportTpmErrorCode(TPM_RC error_code);

 private:
  MetricsLibrary metrics_library_;
};

}  // namespace trunks

#endif  // TRUNKS_TRUNKS_METRICS_H_
