LCOV - code coverage report
Current view: top level - source/common/stats - null_gauge.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 7 23 30.4 %
Date: 2024-01-05 06:35:25 Functions: 5 17 29.4 %

          Line data    Source code
       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       21423 :       : MetricImpl<Gauge>(symbol_table), symbol_table_(symbol_table) {}
      18       21423 :   ~NullGaugeImpl() override {
      19           0 :     // MetricImpl must be explicitly cleared() before destruction, otherwise it
      20           0 :     // will not be able to access the SymbolTable& to free the symbols. An RAII
      21           0 :     // alternative would be to store the SymbolTable reference in the
      22           0 :     // MetricImpl, costing 8 bytes per stat.
      23       21423 :     MetricImpl::clear(symbol_table_);
      24       21423 :   }
      25             : 
      26           0 :   void add(uint64_t) override {}
      27           0 :   void inc() override {}
      28           0 :   void dec() override {}
      29        3378 :   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       21325 :   void incRefCount() override { refcount_helper_.incRefCount(); }
      43       21325 :   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

Generated by: LCOV version 1.15