disk_resource_impl.cc 1002 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/reporting/resources/disk_resource_impl.h"
  5. #include <atomic>
  6. #include <cstdint>
  7. #include "base/check_op.h"
  8. namespace reporting {
  9. DiskResourceImpl::DiskResourceImpl(uint64_t total_size) : total_(total_size) {}
  10. DiskResourceImpl::~DiskResourceImpl() = default;
  11. bool DiskResourceImpl::Reserve(uint64_t size) {
  12. uint64_t old_used = used_.fetch_add(size);
  13. if (old_used + size > total_) {
  14. used_.fetch_sub(size);
  15. return false;
  16. }
  17. return true;
  18. }
  19. void DiskResourceImpl::Discard(uint64_t size) {
  20. DCHECK_LE(size, used_.load());
  21. used_.fetch_sub(size);
  22. }
  23. uint64_t DiskResourceImpl::GetTotal() const {
  24. return total_;
  25. }
  26. uint64_t DiskResourceImpl::GetUsed() const {
  27. return used_.load();
  28. }
  29. void DiskResourceImpl::Test_SetTotal(uint64_t test_total) {
  30. total_ = test_total;
  31. }
  32. } // namespace reporting