diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-11 21:21:36 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-11 21:21:36 +0000 |
commit | 8d5a34e2b9853514b5fc5cb33be629f452e558eb (patch) | |
tree | 6218ea140d951443c8c2295fba8bbfd81699cc86 /net/http/http_stream.h | |
parent | ead41699209ad7b0acdc911364f23c6655be4d3f (diff) | |
download | chromium_src-8d5a34e2b9853514b5fc5cb33be629f452e558eb.zip chromium_src-8d5a34e2b9853514b5fc5cb33be629f452e558eb.tar.gz chromium_src-8d5a34e2b9853514b5fc5cb33be629f452e558eb.tar.bz2 |
Introduce HttpStream and HttpBasicStream.
This is the beginning of the http pipelining work. Introduce HttpStream, an interface for reading and writing to http streams. Provide a basic implementation with HttpBasicStream. Switch HttpNetworkTransaction to reading/writing via HttpStream rather than directly to the socket.
Note that the interface will have to change later on. Read/Write() is the wrong interface, since a pipelining HttpStream implementation will have to detect the end of an http response, rather than having the client (HttpNetworkTransaction) do that. This is just the first step.
For information of the general roadmap for http pipelining, please refer to the bug.
BUG=http://crbug.com/8991
TEST=none
Review URL: http://codereview.chromium.org/119346
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18199 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_stream.h')
-rw-r--r-- | net/http/http_stream.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/net/http/http_stream.h b/net/http/http_stream.h new file mode 100644 index 0000000..361edb0 --- /dev/null +++ b/net/http/http_stream.h @@ -0,0 +1,60 @@ +// Copyright (c) 2009 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. +// +// HttpStream is an interface for reading and writing data to an HttpStream that +// 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 "base/basictypes.h" +#include "net/base/completion_callback.h" + +namespace net { + +class IOBuffer; + +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 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; + + private: + DISALLOW_COPY_AND_ASSIGN(HttpStream); +}; + +} // namespace net + +#endif // NET_HTTP_HTTP_STREAM_H_ |