Avi Drissman | 8ba1bad | 2022-09-13 19:22:36 | [diff] [blame^] | 1 | // Copyright 2020 The Chromium Authors |
Leonid Baraz | 3e8af4b | 2020-11-23 19:04:47 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
Leonid Baraz | ea0c6dc | 2021-11-02 20:38:05 | [diff] [blame] | 5 | #ifndef COMPONENTS_REPORTING_RESOURCES_RESOURCE_INTERFACE_H_ |
| 6 | #define COMPONENTS_REPORTING_RESOURCES_RESOURCE_INTERFACE_H_ |
Leonid Baraz | 3e8af4b | 2020-11-23 19:04:47 | [diff] [blame] | 7 | |
| 8 | #include <cstdint> |
| 9 | |
Leonid Baraz | 960ea8f | 2022-05-17 01:01:06 | [diff] [blame] | 10 | #include "base/memory/ref_counted.h" |
| 11 | #include "base/memory/scoped_refptr.h" |
Anton Bikineev | 1156b5f | 2021-05-15 22:35:36 | [diff] [blame] | 12 | #include "third_party/abseil-cpp/absl/types/optional.h" |
Leonid Baraz | 3e8af4b | 2020-11-23 19:04:47 | [diff] [blame] | 13 | |
| 14 | namespace 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 Baraz | 960ea8f | 2022-05-17 01:01:06 | [diff] [blame] | 19 | class ResourceInterface : public base::RefCountedThreadSafe<ResourceInterface> { |
Leonid Baraz | 3e8af4b | 2020-11-23 19:04:47 | [diff] [blame] | 20 | public: |
Leonid Baraz | 3e8af4b | 2020-11-23 19:04:47 | [diff] [blame] | 21 | // 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 Trudo | f1bf7ce | 2020-12-22 21:46:15 | [diff] [blame] | 25 | virtual bool Reserve(uint64_t size) = 0; |
Leonid Baraz | 3e8af4b | 2020-11-23 19:04:47 | [diff] [blame] | 26 | |
| 27 | // Reverts reservation. |
| 28 | // Must be called after the specified amount is released. |
Zach Trudo | f1bf7ce | 2020-12-22 21:46:15 | [diff] [blame] | 29 | virtual void Discard(uint64_t size) = 0; |
Leonid Baraz | 3e8af4b | 2020-11-23 19:04:47 | [diff] [blame] | 30 | |
| 31 | // Returns total amount. |
Hong Xu | f8e3c130 | 2022-06-01 01:49:21 | [diff] [blame] | 32 | virtual uint64_t GetTotal() const = 0; |
Leonid Baraz |
|