Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/common/matcher/prefix_map_matcher.h
Line
Count
Source
1
#pragma once
2
3
#include "source/common/common/utility.h"
4
#include "source/common/matcher/map_matcher.h"
5
6
namespace Envoy {
7
namespace Matcher {
8
9
/**
10
 * Implementation of a trie match tree which resolves to the OnMatch with the longest matching
11
 * prefix.
12
 */
13
template <class DataType> class PrefixMapMatcher : public MapMatcher<DataType> {
14
public:
15
  PrefixMapMatcher(DataInputPtr<DataType>&& data_input,
16
                   absl::optional<OnMatch<DataType>> on_no_match)
17
3.31k
      : MapMatcher<DataType>(std::move(data_input), std::move(on_no_match)) {}
Envoy::Matcher::PrefixMapMatcher<Envoy::Http::HttpMatchingData>::PrefixMapMatcher(std::__1::unique_ptr<Envoy::Matcher::DataInput<Envoy::Http::HttpMatchingData>, std::__1::default_delete<Envoy::Matcher::DataInput<Envoy::Http::HttpMatchingData> > >&&, std::__1::optional<Envoy::Matcher::OnMatch<Envoy::Http::HttpMatchingData> >)
Line
Count
Source
17
3.31k
      : MapMatcher<DataType>(std::move(data_input), std::move(on_no_match)) {}
Unexecuted instantiation: Envoy::Matcher::PrefixMapMatcher<Envoy::Network::MatchingData>::PrefixMapMatcher(std::__1::unique_ptr<Envoy::Matcher::DataInput<Envoy::Network::MatchingData>, std::__1::default_delete<Envoy::Matcher::DataInput<Envoy::Network::MatchingData> > >&&, std::__1::optional<Envoy::Matcher::OnMatch<Envoy::Network::MatchingData> >)
Unexecuted instantiation: Envoy::Matcher::PrefixMapMatcher<Envoy::Network::UdpMatchingData>::PrefixMapMatcher(std::__1::unique_ptr<Envoy::Matcher::DataInput<Envoy::Network::UdpMatchingData>, std::__1::default_delete<Envoy::Matcher::DataInput<Envoy::Network::UdpMatchingData> > >&&, std::__1::optional<Envoy::Matcher::OnMatch<Envoy::Network::UdpMatchingData> >)
18
19
9.58k
  void addChild(std::string value, OnMatch<DataType>&& on_match) override {
20
9.58k
    children_.add(value, std::make_shared<OnMatch<DataType>>(std::move(on_match)));
21
9.58k
  }
Envoy::Matcher::PrefixMapMatcher<Envoy::Http::HttpMatchingData>::addChild(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, Envoy::Matcher::OnMatch<Envoy::Http::HttpMatchingData>&&)
Line
Count
Source
19
9.58k
  void addChild(std::string value, OnMatch<DataType>&& on_match) override {
20
9.58k
    children_.add(value, std::make_shared<OnMatch<DataType>>(std::move(on_match)));
21
9.58k
  }
Unexecuted instantiation: Envoy::Matcher::PrefixMapMatcher<Envoy::Network::MatchingData>::addChild(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, Envoy::Matcher::OnMatch<Envoy::Network::MatchingData>&&)
Unexecuted instantiation: Envoy::Matcher::PrefixMapMatcher<Envoy::Network::UdpMatchingData>::addChild(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, Envoy::Matcher::OnMatch<Envoy::Network::UdpMatchingData>&&)
22
23
protected:
24
239
  absl::optional<OnMatch<DataType>> doMatch(const std::string& data) override {
25
239
    const auto result = children_.findLongestPrefix(data.c_str());
26
239
    if (result) {
27
110
      return *result;
28
110
    }
29
30
129
    return absl::nullopt;
31
239
  }
Envoy::Matcher::PrefixMapMatcher<Envoy::Http::HttpMatchingData>::doMatch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
24
239
  absl::optional<OnMatch<DataType>> doMatch(const std::string& data) override {
25
239
    const auto result = children_.findLongestPrefix(data.c_str());
26
239
    if (result) {
27
110
      return *result;
28
110
    }
29
30
129
    return absl::nullopt;
31
239
  }
Unexecuted instantiation: Envoy::Matcher::PrefixMapMatcher<Envoy::Network::MatchingData>::doMatch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Unexecuted instantiation: Envoy::Matcher::PrefixMapMatcher<Envoy::Network::UdpMatchingData>::doMatch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
32
33
private:
34
  TrieLookupTable<std::shared_ptr<OnMatch<DataType>>> children_;
35
};
36
37
} // namespace Matcher
38
} // namespace Envoy