Coverage Report

Created: 2024-09-08 07:17

/src/rocksdb/table/block_based/uncompression_dict_reader.h
Line
Count
Source (jump to first uncovered line)
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, const ReadOptions& ro,
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
0
      : table_(t), uncompression_dict_(std::move(uncompression_dict)) {
45
0
    assert(table_);
46
0
  }
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