1 // Copyright 2022 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_SOCKET_NETWORK_BINDING_CLIENT_SOCKET_FACTORY_H_ 6 #define NET_SOCKET_NETWORK_BINDING_CLIENT_SOCKET_FACTORY_H_ 7 8 #include "net/base/network_handle.h" 9 #include "net/socket/client_socket_factory.h" 10 11 namespace net { 12 13 // A ClientSocketFactory to create sockets bound to `network`. 14 class NetworkBindingClientSocketFactory : public ClientSocketFactory { 15 public: 16 explicit NetworkBindingClientSocketFactory(handles::NetworkHandle network); 17 18 NetworkBindingClientSocketFactory(const NetworkBindingClientSocketFactory&) = 19 delete; 20 NetworkBindingClientSocketFactory& operator=( 21 const NetworkBindingClientSocketFactory&) = delete; 22 23 ~NetworkBindingClientSocketFactory() override = default; 24 25 std::unique_ptr<DatagramClientSocket> CreateDatagramClientSocket( 26 DatagramSocket::BindType bind_type, 27 NetLog* net_log, 28 const NetLogSource& source) override; 29 30 std::unique_ptr<TransportClientSocket> CreateTransportClientSocket( 31 const AddressList& addresses, 32 std::unique_ptr<SocketPerformanceWatcher> socket_performance_watcher, 33 NetworkQualityEstimator* network_quality_estimator, 34 NetLog* net_log, 35 const NetLogSource& source) override; 36 37 std::unique_ptr<SSLClientSocket> CreateSSLClientSocket( 38 SSLClientContext* context, 39 std::unique_ptr<StreamSocket> stream_socket, 40 const HostPortPair& host_and_port, 41 const SSLConfig& ssl_config) override; 42 43 private: 44 handles::NetworkHandle network_; 45 }; 46 47 } // namespace net 48 49 #endif // NET_SOCKET_NETWORK_BINDING_CLIENT_SOCKET_FACTORY_H_ 50