/proc/self/cwd/source/common/http/dependency_manager.cc
Line | Count | Source (jump to first uncovered line) |
1 | | #include "source/common/http/dependency_manager.h" |
2 | | |
3 | | #include "absl/container/flat_hash_set.h" |
4 | | #include "absl/strings/substitute.h" |
5 | | |
6 | | namespace Envoy { |
7 | | namespace Http { |
8 | | |
9 | | using envoy::extensions::filters::common::dependency::v3::Dependency; |
10 | | |
11 | 7.55k | absl::Status DependencyManager::validDecodeDependencies() { |
12 | 7.55k | using DependencyTuple = std::tuple<const std::string&, int>; |
13 | 7.55k | absl::flat_hash_set<DependencyTuple> satisfied; |
14 | | |
15 | 7.55k | for (const auto& [name, dependencies] : filter_chain_) { |
16 | 6.59k | for (const auto& requirement : dependencies.decode_required()) { |
17 | 0 | if (!satisfied.contains({requirement.name(), requirement.type()})) { |
18 | 0 | return absl::NotFoundError(absl::Substitute( |
19 | 0 | "Dependency violation: filter '$0' requires a $1 named '$2'", name, |
20 | 0 | Dependency::DependencyType_Name(requirement.type()), requirement.name())); |
21 | 0 | } |
22 | 0 | } |
23 | 6.59k | for (const auto& provided : dependencies.decode_provided()) { |
24 | 0 | satisfied.insert({provided.name(), provided.type()}); |
25 | 0 | } |
26 | 6.59k | } |
27 | | |
28 | 7.55k | return absl::OkStatus(); |
29 | 7.55k | } |
30 | | |
31 | | } // namespace Http |
32 | | } // namespace Envoy |