websocket_handshake_stream_create_helper.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright 2013 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_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_
  5. #define NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_
  6. #include <memory>
  7. #include <set>
  8. #include <string>
  9. #include <vector>
  10. #include "base/memory/raw_ptr.h"
  11. #include "net/base/net_export.h"
  12. #include "net/websockets/websocket_handshake_stream_base.h"
  13. #include "net/websockets/websocket_stream.h"
  14. namespace net {
  15. class WebSocketStreamRequestAPI;
  16. class SpdySession;
  17. class WebSocketBasicHandshakeStream;
  18. class WebSocketEndpointLockManager;
  19. // Implementation of WebSocketHandshakeStreamBase::CreateHelper. This class is
  20. // used in the implementation of WebSocketStream::CreateAndConnectStream() and
  21. // is not intended to be used by itself.
  22. //
  23. // Holds the information needed to construct a
  24. // WebSocketBasicHandshakeStreamBase.
  25. class NET_EXPORT_PRIVATE WebSocketHandshakeStreamCreateHelper
  26. : public WebSocketHandshakeStreamBase::CreateHelper {
  27. public:
  28. // |*connect_delegate| and |*request| must out-live this object.
  29. WebSocketHandshakeStreamCreateHelper(
  30. WebSocketStream::ConnectDelegate* connect_delegate,
  31. const std::vector<std::string>& requested_subprotocols,
  32. WebSocketStreamRequestAPI* request);
  33. WebSocketHandshakeStreamCreateHelper(
  34. const WebSocketHandshakeStreamCreateHelper&) = delete;
  35. WebSocketHandshakeStreamCreateHelper& operator=(
  36. const WebSocketHandshakeStreamCreateHelper&) = delete;
  37. ~WebSocketHandshakeStreamCreateHelper() override;
  38. // WebSocketHandshakeStreamBase::CreateHelper methods
  39. // Creates a WebSocketBasicHandshakeStream over a TCP/IP or TLS socket.
  40. std::unique_ptr<WebSocketHandshakeStreamBase> CreateBasicStream(
  41. std::unique_ptr<ClientSocketHandle> connection,
  42. bool using_proxy,
  43. WebSocketEndpointLockManager* websocket_endpoint_lock_manager) override;
  44. // Creates a WebSocketHttp2HandshakeStream over an HTTP/2 connection.
  45. std::unique_ptr<WebSocketHandshakeStreamBase> CreateHttp2Stream(
  46. base::WeakPtr<SpdySession> session,
  47. std::set<std::string> dns_aliases) override;
  48. private:
  49. const raw_ptr<WebSocketStream::ConnectDelegate> connect_delegate_;
  50. const std::vector<std::string> requested_subprotocols_;
  51. const raw_ptr<WebSocketStreamRequestAPI> request_;
  52. };
  53. } // namespace net
  54. #endif // NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_