LCOV - code coverage report
Current view: top level - envoy/stats - custom_stat_namespaces.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 1 1 100.0 %
Date: 2024-01-05 06:35:25 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/common/pure.h"
       4             : 
       5             : #include "absl/strings/string_view.h"
       6             : #include "absl/types/optional.h"
       7             : 
       8             : namespace Envoy {
       9             : namespace Stats {
      10             : 
      11             : /**
      12             :  * CustomStatNamespaces manages custom stat namespaces. Custom stat namespaces are registered
      13             :  * by extensions that create user-defined metrics, and these metrics are all prefixed
      14             :  * by the namespace. For example, Wasm extension registers "wasmcustom" as a custom stat namespace,
      15             :  * and all the metrics created by user Wasm programs are prefixed by "wasmcustom." internally.
      16             :  * This is mainly for distinguishing these "custom metrics" defined outside Envoy codebase from
      17             :  * the native metrics defined by Envoy codebase, and this way stat sinks are able to determine
      18             :  * how to expose these two kinds of metrics.
      19             :  * Note that the implementation will not be thread-safe so users of this class must be in the main
      20             :  * thread.
      21             :  */
      22             : class CustomStatNamespaces {
      23             : public:
      24        2214 :   virtual ~CustomStatNamespaces() = default;
      25             : 
      26             :   /**
      27             :    * @param name is the name to check.
      28             :    * @return true if the given name is registered as a custom stat namespace, false otherwise.
      29             :    */
      30             :   virtual bool registered(const absl::string_view name) const PURE;
      31             : 
      32             :   /**
      33             :    * Used to register a custom namespace by extensions.
      34             :    * @param name is the name to register.
      35             :    */
      36             :   virtual void registerStatNamespace(const absl::string_view name) PURE;
      37             : 
      38             :   /**
      39             :    * Strips the registered custom stat namespace from the given stat name's prefix if it lives in a
      40             :    * registered custom stat namespace, and the stripped string is returned. Otherwise return
      41             :    * nullopt.
      42             :    * @param stat_name is the view to modify. If it is not in any custom registered namespaces, it
      43             :    * will never be modified.
      44             :    * @return the stripped string if stat_name has a registered custom stat namespace. Otherwise,
      45             :    * return nullopt.
      46             :    */
      47             :   virtual absl::optional<absl::string_view>
      48             :   stripRegisteredPrefix(const absl::string_view stat_name) const PURE;
      49             : };
      50             : 
      51             : } // namespace Stats
      52             : } // namespace Envoy

Generated by: LCOV version 1.15