Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/common/router/metadatamatchcriteria_impl.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include "envoy/router/router.h"
4
5
namespace Envoy {
6
namespace Router {
7
8
class MetadataMatchCriteriaImpl;
9
using MetadataMatchCriteriaImplConstPtr = std::unique_ptr<const MetadataMatchCriteriaImpl>;
10
11
class MetadataMatchCriteriaImpl : public MetadataMatchCriteria {
12
public:
13
  MetadataMatchCriteriaImpl(const ProtobufWkt::Struct& metadata_matches)
14
7.21k
      : metadata_match_criteria_(extractMetadataMatchCriteria(nullptr, metadata_matches)){};
15
16
  // MetadataMatchCriteria
17
0
  const std::vector<MetadataMatchCriterionConstSharedPtr>& metadataMatchCriteria() const override {
18
0
    return metadata_match_criteria_;
19
0
  }
20
21
  MetadataMatchCriteriaConstPtr
22
20.1k
  mergeMatchCriteria(const ProtobufWkt::Struct& metadata_matches) const override {
23
20.1k
    return MetadataMatchCriteriaImplConstPtr(
24
20.1k
        new MetadataMatchCriteriaImpl(extractMetadataMatchCriteria(this, metadata_matches)));
25
20.1k
  }
26
27
  MetadataMatchCriteriaConstPtr
28
  filterMatchCriteria(const std::set<std::string>& names) const override;
29
30
private:
31
  MetadataMatchCriteriaImpl(const std::vector<MetadataMatchCriterionConstSharedPtr>& criteria)
32
20.1k
      : metadata_match_criteria_(criteria){};
33
34
  static std::vector<MetadataMatchCriterionConstSharedPtr>
35
  extractMetadataMatchCriteria(const MetadataMatchCriteriaImpl* parent,
36
                               const ProtobufWkt::Struct& metadata_matches);
37
38
  const std::vector<MetadataMatchCriterionConstSharedPtr> metadata_match_criteria_;
39
};
40
41
class MetadataMatchCriterionImpl : public MetadataMatchCriterion {
42
public:
43
  MetadataMatchCriterionImpl(const std::string& name, const HashedValue& value)
44
105k
      : name_(name), value_(value) {}
45
46
5.04M
  const std::string& name() const override { return name_; }
47
0
  const HashedValue& value() const override { return value_; }
48
49
private:
50
  const std::string name_;
51
  const HashedValue value_;
52
};
53
54
} // namespace Router
55
} // namespace Envoy