LCOV - code coverage report
Current view: top level - source/common/router - metadatamatchcriteria_impl.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 8 12 66.7 %
Date: 2024-01-05 06:35:25 Functions: 5 7 71.4 %

          Line data    Source code
       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          16 :       : 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          16 :   mergeMatchCriteria(const ProtobufWkt::Struct& metadata_matches) const override {
      23          16 :     return MetadataMatchCriteriaImplConstPtr(
      24          16 :         new MetadataMatchCriteriaImpl(extractMetadataMatchCriteria(this, metadata_matches)));
      25          16 :   }
      26             : 
      27             :   MetadataMatchCriteriaConstPtr
      28             :   filterMatchCriteria(const std::set<std::string>& names) const override;
      29             : 
      30             : private:
      31             :   MetadataMatchCriteriaImpl(const std::vector<MetadataMatchCriterionConstSharedPtr>& criteria)
      32          16 :       : 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          32 :       : name_(name), value_(value) {}
      45             : 
      46          48 :   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

Generated by: LCOV version 1.15