1
#pragma once
2

            
3
#include "envoy/common/pure.h"
4
#include "envoy/router/router.h"
5

            
6
namespace Envoy {
7
namespace Router {
8

            
9
struct StatNames;
10
struct VirtualClusterStatNames;
11
struct RouteStatNames;
12

            
13
class Context {
14
public:
15
51165
  virtual ~Context() = default;
16

            
17
  /**
18
   * @return a struct containing StatNames for router stats.
19
   */
20
  virtual const StatNames& statNames() const PURE;
21

            
22
  /**
23
   * @return a struct containing StatNames for virtual cluster stats.
24
   */
25
  virtual const VirtualClusterStatNames& virtualClusterStatNames() const PURE;
26

            
27
  /**
28
   * @return a struct containing StatNames for route level stats.
29
   */
30
  virtual const RouteStatNames& routeStatNames() const PURE;
31

            
32
  /**
33
   * @return a reference to the default generic connection pool factory.
34
   */
35
  virtual GenericConnPoolFactory& genericConnPoolFactory() PURE;
36
};
37

            
38
/**
39
 * RouteStatsContext defines config needed to generate all route level stats.
40
 */
41
class RouteStatsContext {
42
public:
43
71
  virtual ~RouteStatsContext() = default;
44

            
45
  /**
46
   * @return stat name for route specific stats.
47
   */
48
  virtual Stats::StatName statName() const PURE;
49

            
50
  /**
51
   * @return a struct containing stats for route stats.
52
   */
53
  virtual const RouteStats& stats() const PURE;
54
};
55

            
56
} // namespace Router
57
} // namespace Envoy