blob: 57c283159563f03a0cd55af0e4b26c65f7ea2929 [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 "peridot/bin/ledger/cobalt/cobalt.h"
#include <lib/cobalt/cpp/cobalt_logger.h>
#include <lib/fit/function.h>
#include <lib/fsl/vmo/file.h>
namespace ledger {
namespace {
constexpr char kConfigBinProtoPath[] = "/pkg/data/ledger_cobalt_config.pb";
constexpr int32_t kCobaltMetricId = 2;
cobalt::CobaltLogger* g_cobalt_logger = nullptr;
} // namespace
fit::deferred_action<fit::closure> InitializeCobalt(
async_dispatcher_t* dispatcher, component::StartupContext* context) {
std::unique_ptr<cobalt::CobaltLogger> cobalt_logger;
FXL_DCHECK(!g_cobalt_logger);
cobalt_logger =
cobalt::NewCobaltLogger(dispatcher, context, kConfigBinProtoPath);
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(kCobaltMetricId, static_cast<uint32_t>(event));
}
} // namespace ledger