blob: 21be7038d658456c128302db47327cdb14db2e42 [file] [log] [blame]
// Copyright 2018 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_LOGGER_IMPL_H_
#define SRC_COBALT_BIN_APP_LOGGER_IMPL_H_
#include <fuchsia/cobalt/cpp/fidl.h>
#include "src/cobalt/bin/app/timer_manager.h"
#include "third_party/cobalt/src/logger/logger.h"
namespace cobalt {
// Implementations of the Logger and LoggerSimple fidl interfaces.
//
// To test run:
// fx set --with-base //bundles:tools,//src/cobalt/bin:cobalt_tests;
// fx run-test-component cobalt_testapp_no_network
class LoggerImpl : public fuchsia::cobalt::Logger, public fuchsia::cobalt::LoggerSimple {
public:
LoggerImpl(std::unique_ptr<logger::LoggerInterface> logger, TimerManager* timer_manager);
private:
void LogEvent(uint32_t metric_id, uint32_t event_code,
fuchsia::cobalt::LoggerBase::LogEventCallback callback) override;
void LogEventCount(uint32_t metric_id, uint32_t event_code, std::string component,
int64_t period_duration_micros, int64_t count,
fuchsia::cobalt::LoggerBase::LogEventCountCallback callback) override;
void LogElapsedTime(uint32_t metric_id, uint32_t event_code, std::string component,
int64_t elapsed_micros,
fuchsia::cobalt::LoggerBase::LogElapsedTimeCallback callback) override;
void LogFrameRate(uint32_t metric_id, uint32_t event_code, std::string component, float fps,
fuchsia::cobalt::LoggerBase::LogFrameRateCallback callback) override;
void LogMemoryUsage(uint32_t metric_id, uint32_t event_code, std::string component, int64_t bytes,
fuchsia::cobalt::LoggerBase::LogMemoryUsageCallback callback) override;
void LogIntHistogram(uint32_t metric_id, uint32_t event_code, std::string component,
std::vector<fuchsia::cobalt::HistogramBucket> histogram,
fuchsia::cobalt::Logger::LogIntHistogramCallback callback) override;
void LogIntHistogram(uint32_t metric_id, uint32_t event_code, std::string component,
std::vector<uint32_t> bucket_indices, std::vector<uint64_t> bucket_counts,
fuchsia::cobalt::LoggerSimple::LogIntHistogramCallback callback) override;
void LogCustomEvent(uint32_t metric_id,
std::vector<fuchsia::cobalt::CustomEventValue> event_values,
fuchsia::cobalt::Logger::LogCustomEventCallback callback) override;
template <class CB>
void AddTimerObservationIfReady(std::unique_ptr<TimerVal> timer_val_ptr, CB callback);
void StartTimer(uint32_t metric_id, uint32_t event_code, std::string component,
std::string timer_id, uint64_t timestamp, uint32_t timeout_s,
fuchsia::cobalt::LoggerBase::StartTimerCallback callback) override;
void EndTimer(std::string timer_id, uint64_t timestamp, uint32_t timeout_s,
fuchsia::cobalt::LoggerBase::EndTimerCallback callback) override;
void LogCobaltEvent(fuchsia::cobalt::CobaltEvent event,
fuchsia::cobalt::Logger::LogCobaltEventCallback callback) override;
void LogCobaltEvents(std::vector<fuchsia::cobalt::CobaltEvent> events,
fuchsia::cobalt::Logger::LogCobaltEventCallback callback) override;
private:
std::unique_ptr<logger::LoggerInterface> logger_;
TimerManager* timer_manager_;
};
} // namespace cobalt
#endif // SRC_COBALT_BIN_APP_LOGGER_IMPL_H_