2021-06-10 19:55:29 +00:00
|
|
|
// 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
|
|
|
|
|
|
|
|
#include "rocksdb/options.h"
|
|
|
|
#include "rocksdb/status.h"
|
|
|
|
|
|
|
|
namespace ROCKSDB_NAMESPACE {
|
2021-11-20 01:52:42 +00:00
|
|
|
|
2021-06-10 19:55:29 +00:00
|
|
|
class Version;
|
2021-11-20 01:52:42 +00:00
|
|
|
class Slice;
|
|
|
|
class FilePrefetchBuffer;
|
|
|
|
class PinnableSlice;
|
|
|
|
class BlobIndex;
|
2021-06-10 19:55:29 +00:00
|
|
|
|
2021-11-20 01:52:42 +00:00
|
|
|
// A thin wrapper around the blob retrieval functionality of Version.
|
2021-06-10 19:55:29 +00:00
|
|
|
class BlobFetcher {
|
|
|
|
public:
|
2021-11-20 01:52:42 +00:00
|
|
|
BlobFetcher(const Version* version, const ReadOptions& read_options)
|
2021-06-10 19:55:29 +00:00
|
|
|
: version_(version), read_options_(read_options) {}
|
|
|
|
|
2021-11-20 01:52:42 +00:00
|
|
|
Status FetchBlob(const Slice& user_key, const Slice& blob_index_slice,
|
|
|
|
FilePrefetchBuffer* prefetch_buffer,
|
|
|
|
PinnableSlice* blob_value, uint64_t* bytes_read) const;
|
|
|
|
|
|
|
|
Status FetchBlob(const Slice& user_key, const BlobIndex& blob_index,
|
|
|
|
FilePrefetchBuffer* prefetch_buffer,
|
|
|
|
PinnableSlice* blob_value, uint64_t* bytes_read) const;
|
2021-06-10 19:55:29 +00:00
|
|
|
|
|
|
|
private:
|
2021-11-20 01:52:42 +00:00
|
|
|
const Version* version_;
|
2021-06-10 19:55:29 +00:00
|
|
|
ReadOptions read_options_;
|
|
|
|
};
|
2021-11-20 01:52:42 +00:00
|
|
|
} // namespace ROCKSDB_NAMESPACE
|