LCOV - code coverage report
Current view: top level - source/extensions/transport_sockets/tap - config.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 3 45 6.7 %
Date: 2024-01-05 06:35:25 Functions: 1 5 20.0 %

          Line data    Source code
       1             : #include "source/extensions/transport_sockets/tap/config.h"
       2             : 
       3             : #include "envoy/config/tap/v3/common.pb.h"
       4             : #include "envoy/extensions/transport_sockets/tap/v3/tap.pb.h"
       5             : #include "envoy/extensions/transport_sockets/tap/v3/tap.pb.validate.h"
       6             : #include "envoy/registry/registry.h"
       7             : 
       8             : #include "source/common/config/utility.h"
       9             : #include "source/common/protobuf/utility.h"
      10             : #include "source/extensions/transport_sockets/tap/tap.h"
      11             : #include "source/extensions/transport_sockets/tap/tap_config_impl.h"
      12             : 
      13             : namespace Envoy {
      14             : namespace Extensions {
      15             : namespace TransportSockets {
      16             : namespace Tap {
      17             : 
      18             : class SocketTapConfigFactoryImpl : public Extensions::Common::Tap::TapConfigFactory {
      19             : public:
      20             :   SocketTapConfigFactoryImpl(TimeSource& time_source,
      21             :                              Server::Configuration::TransportSocketFactoryContext& context)
      22           0 :       : time_source_(time_source), factory_context_(context) {}
      23             : 
      24             :   // TapConfigFactory
      25             :   Extensions::Common::Tap::TapConfigSharedPtr
      26             :   createConfigFromProto(const envoy::config::tap::v3::TapConfig& proto_config,
      27           0 :                         Extensions::Common::Tap::Sink* admin_streamer) override {
      28           0 :     return std::make_shared<SocketTapConfigImpl>(std::move(proto_config), admin_streamer,
      29           0 :                                                  time_source_, factory_context_);
      30           0 :   }
      31             : 
      32             : private:
      33             :   TimeSource& time_source_;
      34             :   Server::Configuration::TransportSocketFactoryContext& factory_context_;
      35             : };
      36             : 
      37             : Network::UpstreamTransportSocketFactoryPtr
      38             : UpstreamTapSocketConfigFactory::createTransportSocketFactory(
      39             :     const Protobuf::Message& message,
      40           0 :     Server::Configuration::TransportSocketFactoryContext& context) {
      41           0 :   const auto& outer_config =
      42           0 :       MessageUtil::downcastAndValidate<const envoy::extensions::transport_sockets::tap::v3::Tap&>(
      43           0 :           message, context.messageValidationVisitor());
      44           0 :   auto& inner_config_factory = Config::Utility::getAndCheckFactory<
      45           0 :       Server::Configuration::UpstreamTransportSocketConfigFactory>(outer_config.transport_socket());
      46           0 :   ProtobufTypes::MessagePtr inner_factory_config = Config::Utility::translateToFactoryConfig(
      47           0 :       outer_config.transport_socket(), context.messageValidationVisitor(), inner_config_factory);
      48           0 :   auto inner_transport_factory =
      49           0 :       inner_config_factory.createTransportSocketFactory(*inner_factory_config, context);
      50             : 
      51           0 :   auto& server_context = context.serverFactoryContext();
      52           0 :   return std::make_unique<TapSocketFactory>(
      53           0 :       outer_config,
      54           0 :       std::make_unique<SocketTapConfigFactoryImpl>(
      55           0 :           server_context.mainThreadDispatcher().timeSource(), context),
      56           0 :       server_context.admin(), server_context.singletonManager(), server_context.threadLocal(),
      57           0 :       server_context.mainThreadDispatcher(), std::move(inner_transport_factory));
      58           0 : }
      59             : 
      60             : Network::DownstreamTransportSocketFactoryPtr
      61             : DownstreamTapSocketConfigFactory::createTransportSocketFactory(
      62             :     const Protobuf::Message& message, Server::Configuration::TransportSocketFactoryContext& context,
      63           0 :     const std::vector<std::string>& server_names) {
      64           0 :   const auto& outer_config =
      65           0 :       MessageUtil::downcastAndValidate<const envoy::extensions::transport_sockets::tap::v3::Tap&>(
      66           0 :           message, context.messageValidationVisitor());
      67           0 :   auto& inner_config_factory = Config::Utility::getAndCheckFactory<
      68           0 :       Server::Configuration::DownstreamTransportSocketConfigFactory>(
      69           0 :       outer_config.transport_socket());
      70           0 :   ProtobufTypes::MessagePtr inner_factory_config = Config::Utility::translateToFactoryConfig(
      71           0 :       outer_config.transport_socket(), context.messageValidationVisitor(), inner_config_factory);
      72           0 :   auto inner_transport_factory = inner_config_factory.createTransportSocketFactory(
      73           0 :       *inner_factory_config, context, server_names);
      74           0 :   auto& server_context = context.serverFactoryContext();
      75           0 :   return std::make_unique<DownstreamTapSocketFactory>(
      76           0 :       outer_config,
      77           0 :       std::make_unique<SocketTapConfigFactoryImpl>(
      78           0 :           server_context.mainThreadDispatcher().timeSource(), context),
      79           0 :       server_context.admin(), server_context.singletonManager(), server_context.threadLocal(),
      80           0 :       server_context.mainThreadDispatcher(), std::move(inner_transport_factory));
      81           0 : }
      82             : 
      83           2 : ProtobufTypes::MessagePtr TapSocketConfigFactory::createEmptyConfigProto() {
      84           2 :   return std::make_unique<envoy::extensions::transport_sockets::tap::v3::Tap>();
      85           2 : }
      86             : 
      87             : REGISTER_FACTORY(UpstreamTapSocketConfigFactory,
      88             :                  Server::Configuration::UpstreamTransportSocketConfigFactory);
      89             : 
      90             : REGISTER_FACTORY(DownstreamTapSocketConfigFactory,
      91             :                  Server::Configuration::DownstreamTransportSocketConfigFactory);
      92             : 
      93             : } // namespace Tap
      94             : } // namespace TransportSockets
      95             : } // namespace Extensions
      96             : } // namespace Envoy

Generated by: LCOV version 1.15