xref: /aosp_15_r20/external/cronet/net/socket/network_binding_client_socket_factory.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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