blob: e3053f1fe35e25a1c5680dd393447b15094adc24 [file] [log] [blame]
// 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