blob_file_garbage.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
  2. // This source code is licensed under both the GPLv2 (found in the
  3. // COPYING file in the root directory) and Apache 2.0 License
  4. // (found in the LICENSE.Apache file in the root directory).
  5. #pragma once
  6. #include <cstdint>
  7. #include <iosfwd>
  8. #include <string>
  9. #include "db/blob/blob_constants.h"
  10. #include "rocksdb/rocksdb_namespace.h"
  11. namespace ROCKSDB_NAMESPACE {
  12. class JSONWriter;
  13. class Slice;
  14. class Status;
  15. class BlobFileGarbage {
  16. public:
  17. BlobFileGarbage() = default;
  18. BlobFileGarbage(uint64_t blob_file_number, uint64_t garbage_blob_count,
  19. uint64_t garbage_blob_bytes)
  20. : blob_file_number_(blob_file_number),
  21. garbage_blob_count_(garbage_blob_count),
  22. garbage_blob_bytes_(garbage_blob_bytes) {}
  23. uint64_t GetBlobFileNumber() const { return blob_file_number_; }
  24. uint64_t GetGarbageBlobCount() const { return garbage_blob_count_; }
  25. uint64_t GetGarbageBlobBytes() const { return garbage_blob_bytes_; }
  26. void EncodeTo(std::string* output) const;
  27. Status DecodeFrom(Slice* input);
  28. std::string DebugString() const;
  29. std::string DebugJSON() const;
  30. private:
  31. enum CustomFieldTags : uint32_t;
  32. uint64_t blob_file_number_ = kInvalidBlobFileNumber;
  33. uint64_t garbage_blob_count_ = 0;
  34. uint64_t garbage_blob_bytes_ = 0;
  35. };
  36. bool operator==(const BlobFileGarbage& lhs, const BlobFileGarbage& rhs);
  37. bool operator!=(const BlobFileGarbage& lhs, const BlobFileGarbage& rhs);
  38. std::ostream& operator<<(std::ostream& os,
  39. const BlobFileGarbage& blob_file_garbage);
  40. JSONWriter& operator<<(JSONWriter& jw,
  41. const BlobFileGarbage& blob_file_garbage);
  42. } // namespace ROCKSDB_NAMESPACE