/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 |