1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright 2013 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_
- #define NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_
- #include <memory>
- #include <set>
- #include <string>
- #include <vector>
- #include "base/memory/raw_ptr.h"
- #include "net/base/net_export.h"
- #include "net/websockets/websocket_handshake_stream_base.h"
- #include "net/websockets/websocket_stream.h"
- namespace net {
- class WebSocketStreamRequestAPI;
- class SpdySession;
- class WebSocketBasicHandshakeStream;
- class WebSocketEndpointLockManager;
- // Implementation of WebSocketHandshakeStreamBase::CreateHelper. This class is
- // used in the implementation of WebSocketStream::CreateAndConnectStream() and
- // is not intended to be used by itself.
- //
- // Holds the information needed to construct a
- // WebSocketBasicHandshakeStreamBase.
- class NET_EXPORT_PRIVATE WebSocketHandshakeStreamCreateHelper
- : public WebSocketHandshakeStreamBase::CreateHelper {
- public:
- // |*connect_delegate| and |*request| must out-live this object.
- WebSocketHandshakeStreamCreateHelper(
- WebSocketStream::ConnectDelegate* connect_delegate,
- const std::vector<std::string>& requested_subprotocols,
- WebSocketStreamRequestAPI* request);
- WebSocketHandshakeStreamCreateHelper(
- const WebSocketHandshakeStreamCreateHelper&) = delete;
- WebSocketHandshakeStreamCreateHelper& operator=(
- const WebSocketHandshakeStreamCreateHelper&) = delete;
- ~WebSocketHandshakeStreamCreateHelper() override;
- // WebSocketHandshakeStreamBase::CreateHelper methods
- // Creates a WebSocketBasicHandshakeStream over a TCP/IP or TLS socket.
- std::unique_ptr<WebSocketHandshakeStreamBase> CreateBasicStream(
- std::unique_ptr<ClientSocketHandle> connection,
- bool using_proxy,
- WebSocketEndpointLockManager* websocket_endpoint_lock_manager) override;
- // Creates a WebSocketHttp2HandshakeStream over an HTTP/2 connection.
- std::unique_ptr<WebSocketHandshakeStreamBase> CreateHttp2Stream(
- base::WeakPtr<SpdySession> session,
- std::set<std::string> dns_aliases) override;
- private:
- const raw_ptr<WebSocketStream::ConnectDelegate> connect_delegate_;
- const std::vector<std::string> requested_subprotocols_;
- const raw_ptr<WebSocketStreamRequestAPI> request_;
- };
- } // namespace net
- #endif // NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_
|