summaryrefslogtreecommitdiffstats
path: root/src/rocksdb/db/blob/blob_read_request.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rocksdb/db/blob/blob_read_request.h')
-rw-r--r--src/rocksdb/db/blob/blob_read_request.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/rocksdb/db/blob/blob_read_request.h b/src/rocksdb/db/blob/blob_read_request.h
new file mode 100644
index 000000000..f9668ca2e
--- /dev/null
+++ b/src/rocksdb/db/blob/blob_read_request.h
@@ -0,0 +1,58 @@
+// 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