/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 |