blob: 18c934ca1eddd66c38c0e99366d8fec5dd3ab98d [file] [log] [blame]
// Copyright 2020 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 COBALT_SRC_PUBLIC_DIAGNOSTICS_INTERFACE_H_
#define COBALT_SRC_PUBLIC_DIAGNOSTICS_INTERFACE_H_
#include <map>
#include "src/public/lib/registry_identifiers.h"
#include "src/public/lib/report_spec.h"
#include "src/public/lib/status.h"
namespace cobalt {
// Interface for receiving diagnostic information about the functioning of the Cobalt Core library.
class DiagnosticsInterface {
public:
DiagnosticsInterface() = default;
virtual ~DiagnosticsInterface() = default;
// Called when Cobalt finishes an attempt to send observations to the server.
//
// |status| is the result of the attempt.
virtual void SentObservationResult(const Status& status) = 0;
// Called when the Cobalt local Observation Store is updated.
//
// |status| is the result of the attempt.
virtual void ObservationStoreUpdated(
const std::map<lib::ReportSpec, uint64_t>& num_obs_per_report, int64_t store_byte_count,
int64_t max_store_bytes) = 0;
void ObservationStoreUpdated(const std::map<lib::ReportIdentifier, uint64_t>& num_obs_per_report,
int64_t store_byte_count, int64_t max_store_bytes) {
std::map<lib::ReportSpec, uint64_t> map;
for (const auto& [key, value] : num_obs_per_report) {
map[{
.customer_id = key.customer_id(),
.project_id = key.project_id(),
.metric_id = key.metric_id(),
.report_id = key.report_id(),
}] = value;
}
ObservationStoreUpdated(map, store_byte_count, max_store_bytes);
}
// Logged for every call to Logger along with which method was called and the project
// that called it.
virtual void LoggerCalled(int PerProjectLoggerCallsMadeMigratedMetricDimensionLoggerMethod,
const std::string& project) = 0;
// Used to track how much data is stored per-class on disk.
// TODO(fxbug.dev/85571): use named types when InternalMetrics::TrackDiskUsage is fixed.
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
virtual void TrackDiskUsage(int storageClass, int64_t bytes, int64_t byte_limit) = 0;
// Used to track what the quota state of each project on the system is.
//
// |event_type|: tracks what the state is (1: Below quota, 2: Above quota, 3: Above quota and log
// rejected).
//
// TODO(fxbug.dev/96540): Remove default implementation once this is implemented in Fuchsia.
virtual void LocalAggregationQuotaEvent(const lib::ProjectIdentifier& project, int event_type) {}
};
} // namespace cobalt
#endif // COBALT_SRC_PUBLIC_DIAGNOSTICS_INTERFACE_H_