LCOV - code coverage report
Current view: top level - source/extensions/transport_sockets/tap - tap.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 0 38 0.0 %
Date: 2024-01-05 06:35:25 Functions: 0 11 0.0 %

          Line data    Source code
       1             : #include "source/extensions/transport_sockets/tap/tap.h"
       2             : 
       3             : #include "envoy/extensions/transport_sockets/tap/v3/tap.pb.h"
       4             : 
       5             : #include "source/common/buffer/buffer_impl.h"
       6             : 
       7             : namespace Envoy {
       8             : namespace Extensions {
       9             : namespace TransportSockets {
      10             : namespace Tap {
      11             : 
      12             : TapSocket::TapSocket(SocketTapConfigSharedPtr config,
      13             :                      Network::TransportSocketPtr&& transport_socket)
      14           0 :     : PassthroughSocket(std::move(transport_socket)), config_(config) {}
      15             : 
      16           0 : void TapSocket::setTransportSocketCallbacks(Network::TransportSocketCallbacks& callbacks) {
      17           0 :   ASSERT(!tapper_);
      18           0 :   transport_socket_->setTransportSocketCallbacks(callbacks);
      19           0 :   tapper_ = config_ ? config_->createPerSocketTapper(callbacks.connection()) : nullptr;
      20           0 : }
      21             : 
      22           0 : void TapSocket::closeSocket(Network::ConnectionEvent event) {
      23           0 :   if (tapper_ != nullptr) {
      24           0 :     tapper_->closeSocket(event);
      25           0 :   }
      26             : 
      27           0 :   transport_socket_->closeSocket(event);
      28           0 : }
      29             : 
      30           0 : Network::IoResult TapSocket::doRead(Buffer::Instance& buffer) {
      31           0 :   Network::IoResult result = transport_socket_->doRead(buffer);
      32           0 :   if (tapper_ != nullptr && result.bytes_processed_ > 0) {
      33           0 :     tapper_->onRead(buffer, result.bytes_processed_);
      34           0 :   }
      35             : 
      36           0 :   return result;
      37           0 : }
      38             : 
      39           0 : Network::IoResult TapSocket::doWrite(Buffer::Instance& buffer, bool end_stream) {
      40             :   // TODO(htuch): avoid copy.
      41           0 :   Buffer::OwnedImpl copy(buffer);
      42           0 :   Network::IoResult result = transport_socket_->doWrite(buffer, end_stream);
      43           0 :   if (tapper_ != nullptr && result.bytes_processed_ > 0) {
      44           0 :     tapper_->onWrite(copy, result.bytes_processed_, end_stream);
      45           0 :   }
      46           0 :   return result;
      47           0 : }
      48             : 
      49             : TapSocketFactory::TapSocketFactory(
      50             :     const envoy::extensions::transport_sockets::tap::v3::Tap& proto_config,
      51             :     Common::Tap::TapConfigFactoryPtr&& config_factory, OptRef<Server::Admin> admin,
      52             :     Singleton::Manager& singleton_manager, ThreadLocal::SlotAllocator& tls,
      53             :     Event::Dispatcher& main_thread_dispatcher,
      54             :     Network::UpstreamTransportSocketFactoryPtr&& transport_socket_factory)
      55             :     : ExtensionConfigBase(proto_config.common_config(), std::move(config_factory), admin,
      56             :                           singleton_manager, tls, main_thread_dispatcher),
      57           0 :       PassthroughFactory(std::move(transport_socket_factory)) {}
      58             : 
      59             : Network::TransportSocketPtr
      60             : TapSocketFactory::createTransportSocket(Network::TransportSocketOptionsConstSharedPtr options,
      61           0 :                                         Upstream::HostDescriptionConstSharedPtr host) const {
      62           0 :   return std::make_unique<TapSocket>(
      63           0 :       currentConfigHelper<SocketTapConfig>(),
      64           0 :       transport_socket_factory_->createTransportSocket(options, host));
      65           0 : }
      66             : 
      67             : DownstreamTapSocketFactory::DownstreamTapSocketFactory(
      68             :     const envoy::extensions::transport_sockets::tap::v3::Tap& proto_config,
      69             :     Common::Tap::TapConfigFactoryPtr&& config_factory, OptRef<Server::Admin> admin,
      70             :     Singleton::Manager& singleton_manager, ThreadLocal::SlotAllocator& tls,
      71             :     Event::Dispatcher& main_thread_dispatcher,
      72             :     Network::DownstreamTransportSocketFactoryPtr&& transport_socket_factory)
      73             :     : ExtensionConfigBase(proto_config.common_config(), std::move(config_factory), admin,
      74             :                           singleton_manager, tls, main_thread_dispatcher),
      75           0 :       DownstreamPassthroughFactory(std::move(transport_socket_factory)) {}
      76             : 
      77           0 : Network::TransportSocketPtr DownstreamTapSocketFactory::createDownstreamTransportSocket() const {
      78           0 :   return std::make_unique<TapSocket>(currentConfigHelper<SocketTapConfig>(),
      79           0 :                                      transport_socket_factory_->createDownstreamTransportSocket());
      80           0 : }
      81             : 
      82             : } // namespace Tap
      83             : } // namespace TransportSockets
      84             : } // namespace Extensions
      85             : } // namespace Envoy

Generated by: LCOV version 1.15