blob: e9cbc64aceaee0ed2b3c5dd1a334cd390eae0ff2 [file] [log] [blame]
// Copyright 2020 The Fuchsia 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 SRC_COBALT_BIN_APP_METRIC_EVENT_LOGGER_IMPL_H_
#define SRC_COBALT_BIN_APP_METRIC_EVENT_LOGGER_IMPL_H_
#include <fuchsia/metrics/cpp/fidl.h>
#include "third_party/cobalt/src/logger/logger.h"
namespace cobalt {
// Implementations of the MetricEventLogger fidl interfaces.
//
// To test run:
// fx set --with-base //bundles:tools,//src/cobalt/bin:cobalt_tests;
// fx test cobalt_testapp_no_network
class MetricEventLoggerImpl : public fuchsia::metrics::MetricEventLogger {
public:
MetricEventLoggerImpl(std::unique_ptr<logger::LoggerInterface> logger);
private:
void LogOccurrence(uint32_t metric_id, uint64_t count, ::std::vector<uint32_t> event_codes,
fuchsia::metrics::MetricEventLogger::LogOccurrenceCallback callback) override;
void LogInteger(uint32_t metric_id, int64_t value, ::std::vector<uint32_t> event_codes,
fuchsia::metrics::MetricEventLogger::LogIntegerCallback callback) override;
void LogIntegerHistogram(
uint32_t metric_id, std::vector<fuchsia::metrics::HistogramBucket> histogram,
::std::vector<uint32_t> event_codes,
fuchsia::metrics::MetricEventLogger::LogIntegerHistogramCallback callback) override;
void LogString(uint32_t metric_id, std::string string_value, ::std::vector<uint32_t> event_codes,
fuchsia::metrics::MetricEventLogger::LogStringCallback callback) override;
void LogMetricEvents(
std::vector<fuchsia::metrics::MetricEvent> events,
fuchsia::metrics::MetricEventLogger::LogMetricEventsCallback callback) override;
private:
fpromise::result<void, fuchsia::metrics::Error> LogMetricEvent(
fuchsia::metrics::MetricEvent event);
std::unique_ptr<logger::LoggerInterface> logger_;
};
} // namespace cobalt
#endif // SRC_COBALT_BIN_APP_METRIC_EVENT_LOGGER_IMPL_H_