| Index: net/spdy/spdy_proxy_client_socket.h
|
| ===================================================================
|
| --- net/spdy/spdy_proxy_client_socket.h (revision 60753)
|
| +++ net/spdy/spdy_proxy_client_socket.h (working copy)
|
| @@ -1,183 +0,0 @@
|
| -// Copyright (c) 2010 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_SPDY_SPDY_PROXY_CLIENT_SOCKET_H_
|
| -#define NET_SPDY_SPDY_PROXY_CLIENT_SOCKET_H_
|
| -#pragma once
|
| -
|
| -#include <string>
|
| -#include <list>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/ref_counted.h"
|
| -#include "net/base/completion_callback.h"
|
| -#include "net/base/host_port_pair.h"
|
| -#include "net/base/net_log.h"
|
| -#include "net/http/http_auth_controller.h"
|
| -#include "net/http/http_request_headers.h"
|
| -#include "net/http/http_request_info.h"
|
| -#include "net/http/http_response_info.h"
|
| -#include "net/socket/client_socket.h"
|
| -#include "net/spdy/spdy_protocol.h"
|
| -#include "net/spdy/spdy_session.h"
|
| -#include "net/spdy/spdy_stream.h"
|
| -
|
| -
|
| -class GURL;
|
| -
|
| -namespace net {
|
| -
|
| -class AddressList;
|
| -class ClientSocketHandle;
|
| -class HttpStream;
|
| -class IOBuffer;
|
| -class SpdySession;
|
| -class SpdyStream;
|
| -
|
| -class SpdyProxyClientSocket : public ClientSocket, public SpdyStream::Delegate {
|
| - public:
|
| - // Create a socket on top of the |spdy_stream| by sending a SYN_STREAM
|
| - // CONNECT frame for |endpoint|. After the SYN_REPLY is received,
|
| - // any data read/written to the socket will be transferred in data
|
| - // frames.
|
| - SpdyProxyClientSocket(SpdyStream* spdy_stream,
|
| - const std::string& user_agent,
|
| - const HostPortPair& endpoint,
|
| - const GURL& url,
|
| - const HostPortPair& proxy_server,
|
| - HttpAuthCache* auth_cache,
|
| - HttpAuthHandlerFactory* auth_handler_factory);
|
| -
|
| -
|
| - // On destruction Disconnect() is called.
|
| - virtual ~SpdyProxyClientSocket();
|
| -
|
| - const scoped_refptr<HttpAuthController>& auth_controller() {
|
| - return auth_;
|
| - }
|
| -
|
| - const HttpResponseInfo* GetConnectResponseInfo() const {
|
| - return response_.headers ? &response_ : NULL;
|
| - }
|
| -
|
| - // ClientSocket methods:
|
| -
|
| - virtual int Connect(CompletionCallback* callback);
|
| - virtual void Disconnect();
|
| - virtual bool IsConnected() const;
|
| - virtual bool IsConnectedAndIdle() const;
|
| - virtual const BoundNetLog& NetLog() const { return net_log_; }
|
| - virtual void SetSubresourceSpeculation();
|
| - virtual void SetOmniboxSpeculation();
|
| - virtual bool WasEverUsed() const;
|
| -
|
| - // Socket methods:
|
| -
|
| - virtual int Read(IOBuffer* buf, int buf_len, CompletionCallback* callback);
|
| - virtual int Write(IOBuffer* buf, int buf_len, CompletionCallback* callback);
|
| -
|
| - virtual bool SetReceiveBufferSize(int32 size);
|
| - virtual bool SetSendBufferSize(int32 size);
|
| -
|
| - virtual int GetPeerAddress(AddressList* address) const;
|
| -
|
| - // SpdyStream::Delegate methods:
|
| -
|
| - // Called when SYN frame has been sent.
|
| - // Returns true if no more data to be sent after SYN frame.
|
| - virtual bool OnSendHeadersComplete(int status);
|
| -
|
| - // Called when stream is ready to send data.
|
| - // Returns network error code. OK when it successfully sent data.
|
| - virtual int OnSendBody();
|
| -
|
| - // Called when data has been sent. |status| indicates network error
|
| - // or number of bytes has been sent.
|
| - // Returns true if no more data to be sent.
|
| - virtual bool OnSendBodyComplete(int status);
|
| -
|
| - // Called when SYN_STREAM or SYN_REPLY received. |status| indicates network
|
| - // error. Returns network error code.
|
| - virtual int OnResponseReceived(const spdy::SpdyHeaderBlock& response,
|
| - base::Time response_time,
|
| - int status);
|
| -
|
| - // Called when data is received.
|
| - virtual void OnDataReceived(const char* data, int length);
|
| -
|
| - // Called when data is sent.
|
| - virtual void OnDataSent(int length);
|
| -
|
| - // Called when SpdyStream is closed.
|
| - virtual void OnClose(int status);
|
| -
|
| - private:
|
| - enum State {
|
| - STATE_NONE,
|
| - STATE_GENERATE_AUTH_TOKEN,
|
| - STATE_GENERATE_AUTH_TOKEN_COMPLETE,
|
| - STATE_SEND_REQUEST,
|
| - STATE_SEND_REQUEST_COMPLETE,
|
| - STATE_READ_REPLY_COMPLETE,
|
| - STATE_DONE,
|
| - };
|
| -
|
| - void OnIOComplete(int result);
|
| -
|
| - int DoLoop(int last_io_result);
|
| - int DoGenerateAuthToken();
|
| - int DoGenerateAuthTokenComplete(int result);
|
| - int DoSendRequest();
|
| - int DoSendRequestComplete(int result);
|
| - int DoReadReplyComplete(int result);
|
| -
|
| - // Populates |user_buffer_| with as much read data as possible
|
| - // and returns the number of bytes read.
|
| - int PopulateUserReadBuffer();
|
| -
|
| - CompletionCallbackImpl<SpdyProxyClientSocket> io_callback_;
|
| - State next_state_;
|
| -
|
| - // Pointer to the SPDY Stream that this sits on top of.
|
| - scoped_refptr<SpdyStream> spdy_stream_;
|
| -
|
| - // Stores the callback to the layer above, called on completing Read() or
|
| - // Connect().
|
| - CompletionCallback* read_callback_;
|
| - // Stores the callback to the layer above, called on completing Write().
|
| - CompletionCallback* write_callback_;
|
| -
|
| - // CONNECT request and response.
|
| - HttpRequestInfo request_;
|
| - HttpResponseInfo response_;
|
| -
|
| - // The hostname and port of the endpoint. This is not necessarily the one
|
| - // specified by the URL, due to Alternate-Protocol or fixed testing ports.
|
| - const HostPortPair endpoint_;
|
| - scoped_refptr<HttpAuthController> auth_;
|
| -
|
| - // We buffer the response body as it arrives asynchronously from the stream.
|
| - std::list<scoped_refptr<DrainableIOBuffer> > read_buffer_;
|
| -
|
| - // User provided buffer for the Read() response.
|
| - scoped_refptr<DrainableIOBuffer> user_buffer_;
|
| -
|
| - // User specified number of bytes to be written.
|
| - int write_buffer_len_;
|
| - // Number of bytes written which have not been confirmed
|
| - int write_bytes_outstanding_;
|
| -
|
| - // True if read has ever returned zero for eof.
|
| - bool eof_has_been_read_;
|
| - // True if the transport socket has ever sent data.
|
| - bool was_ever_used_;
|
| -
|
| - const BoundNetLog net_log_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SpdyProxyClientSocket);
|
| -};
|
| -
|
| -} // namespace net
|
| -
|
| -#endif // NET_SPDY_SPDY_PROXY_CLIENT_SOCKET_H_
|
|
|