1
#pragma once
2

            
3
#include "envoy/extensions/matching/common_inputs/stats/v3/stats.pb.h"
4
#include "envoy/extensions/matching/common_inputs/stats/v3/stats.pb.validate.h"
5
#include "envoy/stats/stats.h"
6

            
7
#include "source/common/protobuf/utility.h"
8
#include "source/common/stats/stats_matcher_impl.h"
9

            
10
namespace Envoy {
11
namespace Stats {
12

            
13
class StatFullNameMatchInput : public Matcher::DataInput<Stats::StatMatchingData> {
14
public:
15
1329
  Matcher::DataInputGetResult get(const Stats::StatMatchingData& data) const override {
16
1329
    return Matcher::DataInputGetResult::CreateString(data.fullName());
17
1329
  }
18
};
19

            
20
class StatFullNameMatchInputFactory : public Matcher::DataInputFactory<Stats::StatMatchingData> {
21
public:
22
19
  std::string name() const override { return "stat_full_name_match_input"; }
23

            
24
  Matcher::DataInputFactoryCb<Stats::StatMatchingData>
25
17
  createDataInputFactoryCb(const Protobuf::Message&, ProtobufMessage::ValidationVisitor&) override {
26
17
    return [] { return std::make_unique<StatFullNameMatchInput>(); };
27
17
  }
28

            
29
20
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
30
20
    return std::make_unique<
31
20
        envoy::extensions::matching::common_inputs::stats::v3::StatFullNameMatchInput>();
32
20
  }
33
};
34

            
35
class StatTagValueInput : public Matcher::DataInput<Envoy::Stats::StatTagMatchingData> {
36
public:
37
10
  StatTagValueInput() = default;
38

            
39
13
  Matcher::DataInputGetResult get(const Envoy::Stats::StatTagMatchingData& data) const override {
40
13
    return Matcher::DataInputGetResult::CreateStringView(data.value());
41
13
  }
42
};
43

            
44
class StatTagValueInputFactory
45
    : public Matcher::DataInputFactory<Envoy::Stats::StatTagMatchingData> {
46
public:
47
19
  std::string name() const override { return "stat_tag_value_input"; }
48

            
49
  Envoy::Matcher::DataInputFactoryCb<Envoy::Stats::StatTagMatchingData>
50
  createDataInputFactoryCb(const Envoy::Protobuf::Message&,
51
10
                           Envoy::ProtobufMessage::ValidationVisitor&) override {
52
10
    return [] { return std::make_unique<StatTagValueInput>(); };
53
10
  }
54

            
55
13
  Envoy::ProtobufTypes::MessagePtr createEmptyConfigProto() override {
56
13
    return std::make_unique<
57
13
        envoy::extensions::matching::common_inputs::stats::v3::StatTagValueInput>();
58
13
  }
59
};
60

            
61
} // namespace Stats
62
} // namespace Envoy