chromium/components/metrics/structured/storage_manager.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_METRICS_STRUCTURED_STORAGE_MANAGER_H_
#define COMPONENTS_METRICS_STRUCTURED_STORAGE_MANAGER_H_

#include "components/metrics/structured/lib/event_buffer.h"
#include "components/metrics/structured/lib/event_storage.h"
#include "third_party/metrics_proto/structured_data.pb.h"

namespace metrics::structured {

// Enum representing why events were deleted.
enum class DeleteReason {};

// The Storage Manager is responsible for storing and managing Structured
// Metrics events.
//
// The Storage Manager is responsible for the following:
//   * Flushing events to a local file when memory is exceeded.
//   * Dropping events when storage is exceeded.
//   * Retrieving events for upload.
//
// The Storage Manager is not thread safe, with the exception of the
// StorageService interface. Therefore, construction and destruction must be
// done on the same sequence. This class exists to provide an API to
// StructuredMetricsService which only exists in //components.
class StorageManager : public EventStorage<StructuredEventProto> {};

}  // namespace metrics::structured

#endif  // COMPONENTS_METRICS_STRUCTURED_STORAGE_MANAGER_H_