Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/source/common/stats/null_gauge.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include "envoy/stats/stats.h"
4
5
#include "source/common/stats/metric_impl.h"
6
7
namespace Envoy {
8
namespace Stats {
9
10
/**
11
 * Null gauge implementation.
12
 * No-ops on all calls and requires no underlying metric or data.
13
 */
14
class NullGaugeImpl : public MetricImpl<Gauge> {
15
public:
16
  explicit NullGaugeImpl(SymbolTable& symbol_table)
17
2.70M
      : MetricImpl<Gauge>(symbol_table), symbol_table_(symbol_table) {}
18
2.70M
  ~NullGaugeImpl() override {
19
    // MetricImpl must be explicitly cleared() before destruction, otherwise it
20
    // will not be able to access the SymbolTable& to free the symbols. An RAII
21
    // alternative would be to store the SymbolTable reference in the
22
    // MetricImpl, costing 8 bytes per stat.
23
2.70M
    MetricImpl::clear(symbol_table_);
24
2.70M
  }
25
26
0
  void add(uint64_t) override {}
27
0
  void inc() override {}
28
0
  void dec() override {}
29
34.9k
  void set(uint64_t) override {}
30
0
  void setParentValue(uint64_t) override {}
31
0
  void sub(uint64_t) override {}
32
0
  uint64_t value() const override { return 0; }
33
0
  ImportMode importMode() const override { return ImportMode::NeverImport; }
34
0
  void mergeImportMode(ImportMode /* import_mode */) override {}
35
36
  // Metric
37
0
  bool used() const override { return false; }
38
0
  bool hidden() const override { return false; }
39
0
  SymbolTable& symbolTable() override { return symbol_table_; }
40
41
  // RefcountInterface
42
2.70M
  void incRefCount() override { refcount_helper_.incRefCount(); }
43
2.70M
  bool decRefCount() override { return refcount_helper_.decRefCount(); }
44
0
  uint32_t use_count() const override { return refcount_helper_.use_count(); }
45
46
private:
47
  RefcountHelper refcount_helper_;
48
  SymbolTable& symbol_table_;
49
};
50
51
} // namespace Stats
52
} // namespace Envoy