]> git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/table/block_based/uncompression_dict_reader.h
bump version to 18.2.2-pve1
[ceph.git] / ceph / src / rocksdb / table / block_based / uncompression_dict_reader.h
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 //
6
7 #pragma once
8
9 #include <cassert>
10
11 #include "table/block_based/cachable_entry.h"
12 #include "table/format.h"
13
14 namespace ROCKSDB_NAMESPACE {
15
16 class BlockBasedTable;
17 struct BlockCacheLookupContext;
18 class FilePrefetchBuffer;
19 class GetContext;
20 struct ReadOptions;
21 struct UncompressionDict;
22
23 // Provides access to the uncompression dictionary regardless of whether
24 // it is owned by the reader or stored in the cache, or whether it is pinned
25 // in the cache or not.
26 class UncompressionDictReader {
27 public:
28 static Status Create(
29 const BlockBasedTable* table, const ReadOptions& ro,
30 FilePrefetchBuffer* prefetch_buffer, bool use_cache, bool prefetch,
31 bool pin, BlockCacheLookupContext* lookup_context,
32 std::unique_ptr<UncompressionDictReader>* uncompression_dict_reader);
33
34 Status GetOrReadUncompressionDictionary(
35 FilePrefetchBuffer* prefetch_buffer, bool no_io, bool verify_checksums,
36 GetContext* get_context, BlockCacheLookupContext* lookup_context,
37 CachableEntry<UncompressionDict>* uncompression_dict) const;
38
39 size_t ApproximateMemoryUsage() const;
40
41 private:
42 UncompressionDictReader(const BlockBasedTable* t,
43 CachableEntry<UncompressionDict>&& uncompression_dict)
44 : table_(t), uncompression_dict_(std::move(uncompression_dict)) {
45 assert(table_);
46 }
47
48 bool cache_dictionary_blocks() const;
49
50 static Status ReadUncompressionDictionary(
51 const BlockBasedTable* table, FilePrefetchBuffer* prefetch_buffer,
52 const ReadOptions& read_options, bool use_cache, GetContext* get_context,
53 BlockCacheLookupContext* lookup_context,
54 CachableEntry<UncompressionDict>* uncompression_dict);
55
56 const BlockBasedTable* table_;
57 CachableEntry<UncompressionDict> uncompression_dict_;
58 };
59
60 } // namespace ROCKSDB_NAMESPACE