LCOV - code coverage report
Current view: top level - source/common/upstream - transport_socket_match_impl.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 10 29 34.5 %
Date: 2024-01-05 06:35:25 Functions: 3 3 100.0 %

          Line data    Source code
       1             : #include "source/common/upstream/transport_socket_match_impl.h"
       2             : 
       3             : #include "envoy/config/cluster/v3/cluster.pb.h"
       4             : #include "envoy/config/core/v3/base.pb.h"
       5             : #include "envoy/server/transport_socket_config.h"
       6             : 
       7             : #include "source/common/config/utility.h"
       8             : 
       9             : namespace Envoy {
      10             : namespace Upstream {
      11             : 
      12             : TransportSocketMatcherImpl::TransportSocketMatcherImpl(
      13             :     const Protobuf::RepeatedPtrField<envoy::config::cluster::v3::Cluster::TransportSocketMatch>&
      14             :         socket_matches,
      15             :     Server::Configuration::TransportSocketFactoryContext& factory_context,
      16             :     Network::UpstreamTransportSocketFactoryPtr& default_factory, Stats::Scope& stats_scope)
      17             :     : stats_scope_(stats_scope),
      18         159 :       default_match_("default", std::move(default_factory), generateStats("default")) {
      19         159 :   for (const auto& socket_match : socket_matches) {
      20           0 :     const auto& socket_config = socket_match.transport_socket();
      21           0 :     auto& config_factory = Config::Utility::getAndCheckFactory<
      22           0 :         Server::Configuration::UpstreamTransportSocketConfigFactory>(socket_config);
      23           0 :     ProtobufTypes::MessagePtr message = Config::Utility::translateToFactoryConfig(
      24           0 :         socket_config, factory_context.messageValidationVisitor(), config_factory);
      25           0 :     FactoryMatch factory_match(
      26           0 :         socket_match.name(), config_factory.createTransportSocketFactory(*message, factory_context),
      27           0 :         generateStats(absl::StrCat(socket_match.name(), ".")));
      28           0 :     for (const auto& kv : socket_match.match().fields()) {
      29           0 :       factory_match.label_set.emplace_back(kv.first, kv.second);
      30           0 :     }
      31           0 :     matches_.emplace_back(std::move(factory_match));
      32           0 :   }
      33         159 : }
      34             : 
      35         159 : TransportSocketMatchStats TransportSocketMatcherImpl::generateStats(const std::string& prefix) {
      36         159 :   return {ALL_TRANSPORT_SOCKET_MATCH_STATS(POOL_COUNTER_PREFIX(stats_scope_, prefix))};
      37         159 : }
      38             : 
      39             : TransportSocketMatcher::MatchData
      40         159 : TransportSocketMatcherImpl::resolve(const envoy::config::core::v3::Metadata* metadata) const {
      41         159 :   for (const auto& match : matches_) {
      42           0 :     if (Config::Metadata::metadataLabelMatch(
      43           0 :             match.label_set, metadata,
      44           0 :             Envoy::Config::MetadataFilters::get().ENVOY_TRANSPORT_SOCKET_MATCH, false)) {
      45           0 :       return {*match.factory, match.stats, match.name};
      46           0 :     }
      47           0 :   }
      48         159 :   return {*default_match_.factory, default_match_.stats, default_match_.name};
      49         159 : }
      50             : 
      51             : } // namespace Upstream
      52             : } // namespace Envoy

Generated by: LCOV version 1.15