summaryrefslogtreecommitdiffstats
path: root/src/rocksdb/db/blob/blob_file_cache.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/rocksdb/db/blob/blob_file_cache.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/rocksdb/db/blob/blob_file_cache.h b/src/rocksdb/db/blob/blob_file_cache.h
new file mode 100644
index 000000000..8eec05f18
--- /dev/null
+++ b/src/rocksdb/db/blob/blob_file_cache.h
@@ -0,0 +1,52 @@
+// 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 <cinttypes>
+
+#include "cache/cache_helpers.h"
+#include "rocksdb/rocksdb_namespace.h"
+#include "util/mutexlock.h"
+
+namespace ROCKSDB_NAMESPACE {
+
+class Cache;
+struct ImmutableOptions;
+struct FileOptions;
+class HistogramImpl;
+class Status;
+class BlobFileReader;
+class Slice;
+class IOTracer;
+
+class BlobFileCache {
+ public:
+ BlobFileCache(Cache* cache, const ImmutableOptions* immutable_options,
+ const FileOptions* file_options, uint32_t column_family_id,
+ HistogramImpl* blob_file_read_hist,
+ const std::shared_ptr<IOTracer>& io_tracer);
+
+ BlobFileCache(const BlobFileCache&) = delete;
+ BlobFileCache& operator=(const BlobFileCache&) = delete;
+
+ Status GetBlobFileReader(uint64_t blob_file_number,
+ CacheHandleGuard<BlobFileReader>* blob_file_reader);
+
+ private:
+ Cache* cache_;
+ // Note: mutex_ below is used to guard against multiple threads racing to open
+ // the same file.
+ Striped<port::Mutex, Slice> mutex_;
+ const ImmutableOptions* immutable_options_;
+ const FileOptions* file_options_;
+ uint32_t column_family_id_;
+ HistogramImpl* blob_file_read_hist_;
+ std::shared_ptr<IOTracer> io_tracer_;
+
+ static constexpr size_t kNumberOfMutexStripes = 1 << 7;
+};
+
+} // namespace ROCKSDB_NAMESPACE