| // Copyright 2017 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. |
| |
| #include "src/ledger/bin/cobalt/cobalt.h" |
| |
| #include <lib/fit/function.h> |
| #include <lib/fsl/vmo/file.h> |
| |
| #include "src/ledger/bin/cobalt/ledger_metrics_registry.cb.h" |
| #include "src/lib/cobalt/cpp/cobalt_logger.h" |
| |
| namespace ledger { |
| namespace { |
| |
| cobalt::CobaltLogger* g_cobalt_logger = nullptr; |
| |
| } // namespace |
| |
| fit::deferred_action<fit::closure> InitializeCobalt( |
| async_dispatcher_t* dispatcher, sys::ComponentContext* context) { |
| std::unique_ptr<cobalt::CobaltLogger> cobalt_logger; |
| FXL_DCHECK(!g_cobalt_logger); |
| |
| cobalt_logger = cobalt::NewCobaltLoggerFromProjectName( |
| dispatcher, context, cobalt_registry::kProjectName); |
| |
| g_cobalt_logger = cobalt_logger.get(); |
| return fit::defer<fit::closure>([cobalt_logger = std::move(cobalt_logger)] { |
| g_cobalt_logger = nullptr; |
| }); |
| } |
| |
| void ReportEvent(CobaltEvent event) { |
| // Do not do anything if cobalt reporting is disabled. |
| if (!g_cobalt_logger) { |
| return; |
| } |
| g_cobalt_logger->LogEvent(cobalt_registry::kRareEventOccurrenceMetricId, |
| static_cast<uint32_t>(event)); |
| } |
| |
| } // namespace ledger |