/proc/self/cwd/source/common/router/context_impl.h
Line | Count | Source (jump to first uncovered line) |
1 | | #pragma once |
2 | | |
3 | | #include "envoy/router/context.h" |
4 | | #include "envoy/router/router.h" |
5 | | #include "envoy/stats/stats_macros.h" |
6 | | |
7 | | #include "source/common/common/assert.h" |
8 | | |
9 | | namespace Envoy { |
10 | | namespace Router { |
11 | | |
12 | | /** |
13 | | * All router filter stats. @see stats_macros.h |
14 | | */ |
15 | | #define ALL_ROUTER_STATS(COUNTER, GAUGE, HISTOGRAM, TEXT_READOUT, STATNAME) \ |
16 | | COUNTER(no_cluster) \ |
17 | | COUNTER(no_route) \ |
18 | | COUNTER(passthrough_internal_redirect_bad_location) \ |
19 | | COUNTER(passthrough_internal_redirect_no_route) \ |
20 | | COUNTER(passthrough_internal_redirect_predicate) \ |
21 | | COUNTER(passthrough_internal_redirect_too_many_redirects) \ |
22 | | COUNTER(passthrough_internal_redirect_unsafe_scheme) \ |
23 | | COUNTER(rq_direct_response) \ |
24 | | COUNTER(rq_redirect) \ |
25 | | COUNTER(rq_reset_after_downstream_response_started) \ |
26 | | COUNTER(rq_total) \ |
27 | | STATNAME(retry) |
28 | | |
29 | | MAKE_STAT_NAMES_STRUCT(StatNames, ALL_ROUTER_STATS); |
30 | | |
31 | | /** |
32 | | * Captures router-related structures with cardinality of one per server. |
33 | | */ |
34 | | class ContextImpl : public Context { |
35 | | public: |
36 | | explicit ContextImpl(Stats::SymbolTable& symbol_table); |
37 | 28.6k | ~ContextImpl() override = default; |
38 | | |
39 | 7.03k | const StatNames& statNames() const override { return stat_names_; } |
40 | 25.0k | const VirtualClusterStatNames& virtualClusterStatNames() const override { |
41 | 25.0k | return virtual_cluster_stat_names_; |
42 | 25.0k | } |
43 | 25.4k | const RouteStatNames& routeStatNames() const override { return route_stat_names_; } |
44 | 2.40k | GenericConnPoolFactory& genericConnPoolFactory() override { |
45 | 2.40k | ASSERT(generic_conn_pool_factory_ != nullptr); |
46 | 2.40k | return *generic_conn_pool_factory_; |
47 | 2.40k | } |
48 | | |
49 | | private: |
50 | | const StatNames stat_names_; |
51 | | const RouteStatNames route_stat_names_; |
52 | | const VirtualClusterStatNames virtual_cluster_stat_names_; |
53 | | GenericConnPoolFactory* generic_conn_pool_factory_; |
54 | | }; |
55 | | |
56 | | class RouteStatsContextImpl : public RouteStatsContext { |
57 | | public: |
58 | | RouteStatsContextImpl(Stats::Scope& scope, const RouteStatNames& route_stat_names, |
59 | | const Stats::StatName& vhost_stat_name, const std::string& stat_prefix); |
60 | | |
61 | 25.4k | ~RouteStatsContextImpl() override = default; |
62 | | |
63 | 0 | Stats::StatName statName() const override { return route_stat_name_; } |
64 | 0 | const RouteStats& stats() const override { return route_stats_; } |
65 | | |
66 | | private: |
67 | | const Stats::StatNameManagedStorage route_stat_name_storage_; |
68 | | Stats::ScopeSharedPtr route_stats_scope_; |
69 | | Stats::StatName route_stat_name_; |
70 | | RouteStats route_stats_; |
71 | | }; |
72 | | |
73 | | } // namespace Router |
74 | | } // namespace Envoy |