network_binding_client_socket_factory.h 1.7 KB

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