Line data Source code
1 : #pragma once 2 : 3 : #include "envoy/network/socket.h" 4 : 5 : #include "source/common/network/socket_interface.h" 6 : 7 : namespace Envoy { 8 : namespace Network { 9 : 10 : class SocketInterfaceImpl : public SocketInterfaceBase { 11 : public: 12 : // SocketInterface 13 : IoHandlePtr socket(Socket::Type socket_type, Address::Type addr_type, Address::IpVersion version, 14 : bool socket_v6only, const SocketCreationOptions& options) const override; 15 : IoHandlePtr socket(Socket::Type socket_type, const Address::InstanceConstSharedPtr addr, 16 : const SocketCreationOptions& options) const override; 17 : bool ipFamilySupported(int domain) override; 18 : 19 : // Server::Configuration::BootstrapExtensionFactory 20 : Server::BootstrapExtensionPtr 21 : createBootstrapExtension(const Protobuf::Message& config, 22 : Server::Configuration::ServerFactoryContext& context) override; 23 : 24 : ProtobufTypes::MessagePtr createEmptyConfigProto() override; 25 203 : std::string name() const override { 26 203 : return "envoy.extensions.network.socket_interface.default_socket_interface"; 27 203 : }; 28 : 29 : static IoHandlePtr makePlatformSpecificSocket(int socket_fd, bool socket_v6only, 30 : absl::optional<int> domain); 31 : 32 : protected: 33 : virtual IoHandlePtr makeSocket(int socket_fd, bool socket_v6only, 34 : absl::optional<int> domain) const; 35 : }; 36 : 37 : DECLARE_FACTORY(SocketInterfaceImpl); 38 : 39 : } // namespace Network 40 : } // namespace Envoy