| // 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_ |