Line data Source code
1 : #pragma once 2 : 3 : #include "envoy/extensions/udp_packet_writer/v3/udp_gso_batch_writer_factory.pb.h" 4 : #include "envoy/network/udp_packet_writer_handler.h" 5 : #include "envoy/registry/registry.h" 6 : 7 : #ifdef ENVOY_ENABLE_QUIC 8 : #include "source/common/quic/udp_gso_batch_writer.h" 9 : #endif 10 : 11 : #if UDP_GSO_BATCH_WRITER_COMPILETIME_SUPPORT 12 : 13 : namespace Envoy { 14 : namespace Quic { 15 : 16 : class UdpGsoBatchWriterFactoryFactory : public Network::UdpPacketWriterFactoryFactory { 17 : public: 18 147 : std::string name() const override { return "envoy.udp_packet_writer.gso"; } 19 : Network::UdpPacketWriterFactoryPtr 20 0 : createUdpPacketWriterFactory(const envoy::config::core::v3::TypedExtensionConfig&) override { 21 0 : #ifdef ENVOY_ENABLE_QUIC 22 0 : return std::make_unique<UdpGsoBatchWriterFactory>(); 23 : #else 24 : return {}; 25 : #endif 26 0 : } 27 12 : ProtobufTypes::MessagePtr createEmptyConfigProto() override { 28 12 : return std::make_unique<envoy::extensions::udp_packet_writer::v3::UdpGsoBatchWriterFactory>(); 29 12 : } 30 : 31 : private: 32 : envoy::config::core::v3::RuntimeFeatureFlag enabled_; 33 : }; 34 : 35 : DECLARE_FACTORY(UdpGsoBatchWriterFactoryFactory); 36 : 37 : } // namespace Quic 38 : } // namespace Envoy 39 : 40 : #endif