| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | //  Copyright (c) Meta Platforms, Inc. and affiliates.//  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#include <cinttypes>#include "rocksdb/compression_type.h"#include "rocksdb/slice.h"#include "rocksdb/status.h"#include "util/autovector.h"namespace ROCKSDB_NAMESPACE {// A read Blob request structure for use in BlobSource::MultiGetBlob and// BlobFileReader::MultiGetBlob.struct BlobReadRequest {  // User key to lookup the paired blob  const Slice* user_key = nullptr;  // File offset in bytes  uint64_t offset = 0;  // Length to read in bytes  size_t len = 0;  // Blob compression type  CompressionType compression = kNoCompression;  // Output parameter set by MultiGetBlob() to point to the data buffer, and  // the number of valid bytes  PinnableSlice* result = nullptr;  // Status of read  Status* status = nullptr;  BlobReadRequest(const Slice& _user_key, uint64_t _offset, size_t _len,                  CompressionType _compression, PinnableSlice* _result,                  Status* _status)      : user_key(&_user_key),        offset(_offset),        len(_len),        compression(_compression),        result(_result),        status(_status) {}  BlobReadRequest() = default;  BlobReadRequest(const BlobReadRequest& other) = default;  BlobReadRequest& operator=(const BlobReadRequest& other) = default;};using BlobFileReadRequests =    std::tuple<uint64_t /* file_number */, uint64_t /* file_size */,               autovector<BlobReadRequest>>;}  // namespace ROCKSDB_NAMESPACE
 |