| Index: net/http/http_stream.h
|
| ===================================================================
|
| --- net/http/http_stream.h (revision 29289)
|
| +++ net/http/http_stream.h (working copy)
|
| @@ -6,51 +6,74 @@
|
| // keeps the client agnostic of the actual underlying transport layer. This
|
| // provides an abstraction for both a basic http stream as well as http
|
| // pipelining implementations.
|
| -//
|
| -// NOTE(willchan): This interface is a work in progress. It will most likely
|
| -// change, since for a pipelining implementation, the stream needs to contain
|
| -// the http parsing code. For symmetry, the writing methods will probably
|
| -// contain the code for constructing http requests.
|
|
|
| #ifndef NET_HTTP_HTTP_STREAM_H_
|
| #define NET_HTTP_HTTP_STREAM_H_
|
|
|
| +#include <string>
|
| +
|
| #include "base/basictypes.h"
|
| -#include "net/base/completion_callback.h"
|
| +#include "net/socket/client_socket_handle.h"
|
|
|
| namespace net {
|
|
|
| +class HttpRequestInfo;
|
| +class HttpResponseInfo;
|
| class IOBuffer;
|
| +class UploadDataStream;
|
|
|
| class HttpStream {
|
| public:
|
| HttpStream() {}
|
| virtual ~HttpStream() {}
|
|
|
| - // Reads data, up to buf_len bytes, from the socket. The number of bytes
|
| - // read is returned, or an error is returned upon failure. Zero is returned
|
| - // to indicate end-of-file. ERR_IO_PENDING is returned if the operation
|
| - // could not be completed synchronously, in which case the result will be
|
| - // passed to the callback when available. If the operation is not completed
|
| - // immediately, the socket acquires a reference to the provided buffer until
|
| - // the callback is invoked or the socket is destroyed.
|
| - virtual int Read(IOBuffer* buf,
|
| - int buf_len,
|
| - CompletionCallback* callback) = 0;
|
| + // Writes the headers and uploads body data to the underlying socket.
|
| + // ERR_IO_PENDING is returned if the operation could not be completed
|
| + // synchronously, in which case the result will be passed to the callback
|
| + // when available. Returns OK on success. The HttpStream takes ownership
|
| + // of the request_body.
|
| + virtual int SendRequest(const HttpRequestInfo* request,
|
| + const std::string& request_headers,
|
| + UploadDataStream* request_body,
|
| + CompletionCallback* callback) = 0;
|
|
|
| - // Writes data, up to buf_len bytes, to the socket. Note: only part of the
|
| - // data may be written! The number of bytes written is returned, or an error
|
| - // is returned upon failure. ERR_IO_PENDING is returned if the operation
|
| - // could not be completed synchronously, in which case the result will be
|
| - // passed to the callback when available. If the operation is not completed
|
| - // immediately, the socket acquires a reference to the provided buffer until
|
| - // the callback is invoked or the socket is destroyed.
|
| - // Implementations of this method should not modify the contents of the actual
|
| - // buffer that is written to the socket.
|
| - virtual int Write(IOBuffer* buf,
|
| - int buf_len,
|
| - CompletionCallback* callback) = 0;
|
| + // Queries the UploadDataStream for its progress (bytes sent).
|
| + virtual uint64 GetUploadProgress() const = 0;
|
|
|
| + // Reads from the underlying socket until the response headers have been
|
| + // completely received. ERR_IO_PENDING is returned if the operation could
|
| + // not be completed synchronously, in which case the result will be passed
|
| + // to the callback when available. Returns OK on success. The response
|
| + // headers are available in the HttpResponseInfo returned by GetResponseInfo
|
| + virtual int ReadResponseHeaders(CompletionCallback* callback) = 0;
|
| +
|
| + // Provides access to HttpResponseInfo (owned by HttpStream).
|
| + virtual HttpResponseInfo* GetResponseInfo() const = 0;
|
| +
|
| + // Reads response body data, up to |buf_len| bytes. The number of bytes read
|
| + // is returned, or an error is returned upon failure. ERR_CONNECTION_CLOSED
|
| + // is returned to indicate end-of-connection. ERR_IO_PENDING is returned if
|
| + // the operation could not be completed synchronously, in which case the
|
| + // result will be passed to the callback when available. If the operation is
|
| + // not completed immediately, the socket acquires a reference to the provided
|
| + // buffer until the callback is invoked or the socket is destroyed.
|
| + virtual int ReadResponseBody(IOBuffer* buf, int buf_len,
|
| + CompletionCallback* callback) = 0;
|
| +
|
| + // Indicates if the response body has been completely read.
|
| + virtual bool IsResponseBodyComplete() const = 0;
|
| +
|
| + // Indicates that the end of the response is detectable. This means that
|
| + // the response headers indicate either chunked encoding or content length.
|
| + // If neither is sent, the server must close the connection for us to detect
|
| + // the end of the response.
|
| + virtual bool CanFindEndOfResponse() const = 0;
|
| +
|
| + // After the response headers have been read and after the response body
|
| + // is complete, this function indicates if more data (either erroneous or
|
| + // as part of the next pipelined response) has been read from the socket.
|
| + virtual bool IsMoreDataBuffered() const = 0;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(HttpStream);
|
| };
|
|
|
| Property changes on: net/http/http_stream.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|