blob: 44c4c87faff28a08cc0e288e71ef9ef4edd3593f [file] [log] [blame]
Avi Drissman8ba1bad2022-09-13 19:22:361// Copyright 2020 The Chromium Authors
Leonid Baraz3e8af4b2020-11-23 19:04:472// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Leonid Barazea0c6dc2021-11-02 20:38:055#ifndef COMPONENTS_REPORTING_RESOURCES_RESOURCE_INTERFACE_H_
6#define COMPONENTS_REPORTING_RESOURCES_RESOURCE_INTERFACE_H_
Leonid Baraz3e8af4b2020-11-23 19:04:477
8#include <cstdint>
9
Leonid Baraz960ea8f2022-05-17 01:01:0610#include "base/memory/ref_counted.h"
11#include "base/memory/scoped_refptr.h"
Anton Bikineev1156b5f2021-05-15 22:35:3612#include "third_party/abseil-cpp/absl/types/optional.h"
Leonid Baraz3e8af4b2020-11-23 19:04:4713
14namespace reporting {
15
16// Interface to resources management by Storage module.
17// Must be implemented by the caller base on the platform limitations.
18// All APIs are non-blocking.
Leonid Baraz960ea8f2022-05-17 01:01:0619class ResourceInterface : public base::RefCountedThreadSafe<ResourceInterface> {
Leonid Baraz3e8af4b2020-11-23 19:04:4720 public:
Leonid Baraz3e8af4b2020-11-23 19:04:4721 // Needs to be called before attempting to allocate specified size.
22 // Returns true if requested amount can be allocated.
23 // After that the caller can actually allocate it or must call
24 // |Discard| if decided not to allocate.
Zach Trudof1bf7ce2020-12-22 21:46:1525 virtual bool Reserve(uint64_t size) = 0;
Leonid Baraz3e8af4b2020-11-23 19:04:4726
27 // Reverts reservation.
28 // Must be called after the specified amount is released.
Zach Trudof1bf7ce2020-12-22 21:46:1529 virtual void Discard(uint64_t size) = 0;
Leonid Baraz3e8af4b2020-11-23 19:04:4730
31 // Returns total amount.
Hong Xuf8e3c1302022-06-01 01:49:2132 virtual uint64_t GetTotal() const = 0;
Leonid Baraz