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
11184
  std::string name() const override { return "envoy.udp_packet_writer.gso"; }
19
  Network::UdpPacketWriterFactoryPtr
20
1
  createUdpPacketWriterFactory(const envoy::config::core::v3::TypedExtensionConfig&) override {
21
1
#ifdef ENVOY_ENABLE_QUIC
22
1
    return std::make_unique<UdpGsoBatchWriterFactory>();
23
#else
24
    return {};
25
#endif
26
1
  }
27
468
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
28
468
    return std::make_unique<envoy::extensions::udp_packet_writer::v3::UdpGsoBatchWriterFactory>();
29
468
  }
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