summaryrefslogtreecommitdiffstats
path: root/src/rocksdb/utilities/blob_db/blob_db_gc_stats.h
blob: 1e6e4a25d7491428ae702125c310932558aee846 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
//  This source code is licensed under both the GPLv2 (found in the
//  COPYING file in the root directory) and Apache 2.0 License
//  (found in the LICENSE.Apache file in the root directory).
//
#pragma once

#ifndef ROCKSDB_LITE

namespace ROCKSDB_NAMESPACE {

namespace blob_db {

/**
 * Statistics related to a single garbage collection pass (i.e. a single
 * (sub)compaction).
 */
class BlobDBGarbageCollectionStats {
 public:
  uint64_t AllBlobs() const { return all_blobs_; }
  uint64_t AllBytes() const { return all_bytes_; }
  uint64_t RelocatedBlobs() const { return relocated_blobs_; }
  uint64_t RelocatedBytes() const { return relocated_bytes_; }
  uint64_t NewFiles() const { return new_files_; }
  bool HasError() const { return error_; }

  void AddBlob(uint64_t size) {
    ++all_blobs_;
    all_bytes_ += size;
  }

  void AddRelocatedBlob(uint64_t size) {
    ++relocated_blobs_;
    relocated_bytes_ += size;
  }

  void AddNewFile() { ++new_files_; }

  void SetError() { error_ = true; }

 private:
  uint64_t all_blobs_ = 0;
  uint64_t all_bytes_ = 0;
  uint64_t relocated_blobs_ = 0;
  uint64_t relocated_bytes_ = 0;
  uint64_t new_files_ = 0;
  bool error_ = false;
};

}  // namespace blob_db
}  // namespace ROCKSDB_NAMESPACE
#endif  // ROCKSDB_LITE