blob_file_addition.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 <cassert>
  7. #include <cstdint>
  8. #include <iosfwd>
  9. #include <string>
  10. #include "db/blob/blob_constants.h"
  11. #include "rocksdb/rocksdb_namespace.h"
  12. namespace ROCKSDB_NAMESPACE {
  13. class JSONWriter;
  14. class Slice;
  15. class Status;
  16. class BlobFileAddition {
  17. public:
  18. BlobFileAddition() = default;
  19. BlobFileAddition(uint64_t blob_file_number, uint64_t total_blob_count,
  20. uint64_t total_blob_bytes, std::string checksum_method,
  21. std::string checksum_value)
  22. : blob_file_number_(blob_file_number),
  23. total_blob_count_(total_blob_count),
  24. total_blob_bytes_(total_blob_bytes),
  25. checksum_method_(std::move(checksum_method)),
  26. checksum_value_(std::move(checksum_value)) {
  27. assert(checksum_method_.empty() == checksum_value_.empty());
  28. }
  29. uint64_t GetBlobFileNumber() const { return blob_file_number_; }
  30. uint64_t GetTotalBlobCount() const { return total_blob_count_; }
  31. uint64_t GetTotalBlobBytes() const { return total_blob_bytes_; }
  32. const std::string& GetChecksumMethod() const { return checksum_method_; }
  33. const std::string& GetChecksumValue() const { return checksum_value_; }
  34. void EncodeTo(std::string* output) const;
  35. Status DecodeFrom(Slice* input);
  36. std::string DebugString() const;
  37. std::string DebugJSON() const;
  38. private:
  39. enum CustomFieldTags : uint32_t;
  40. uint64_t blob_file_number_ = kInvalidBlobFileNumber;
  41. uint64_t total_blob_count_ = 0;
  42. uint64_t total_blob_bytes_ = 0;
  43. std::string checksum_method_;
  44. std::string checksum_value_;
  45. };
  46. bool operator==(const BlobFileAddition& lhs, const BlobFileAddition& rhs);
  47. bool operator!=(const BlobFileAddition& lhs, const BlobFileAddition& rhs);
  48. std::ostream& operator<<(std::ostream& os,
  49. const BlobFileAddition& blob_file_addition);
  50. JSONWriter& operator<<(JSONWriter& jw,
  51. const BlobFileAddition& blob_file_addition);
  52. } // namespace ROCKSDB_NAMESPACE