• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2009 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 //
5 // HttpBasicStream is a simple implementation of HttpStream.  It assumes it is
6 // not sharing a sharing with any other HttpStreams, therefore it just reads and
7 // writes directly to the Http Stream.
8 
9 #ifndef NET_HTTP_HTTP_BASIC_STREAM_H_
10 #define NET_HTTP_HTTP_BASIC_STREAM_H_
11 
12 #include <string>
13 
14 #include "base/basictypes.h"
15 #include "net/base/io_buffer.h"
16 #include "net/http/http_stream.h"
17 #include "net/http/http_stream_parser.h"
18 
19 namespace net {
20 
21 class ClientSocketHandle;
22 class HttpRequestInfo;
23 class HttpResponseInfo;
24 class LoadLog;
25 class UploadDataStream;
26 
27 class HttpBasicStream : public HttpStream {
28  public:
29   HttpBasicStream(ClientSocketHandle* handle, LoadLog* load_log);
~HttpBasicStream()30   virtual ~HttpBasicStream() {}
31 
32   // HttpStream methods:
33   virtual int SendRequest(const HttpRequestInfo* request,
34                           const std::string& headers,
35                           UploadDataStream* request_body,
36                           HttpResponseInfo* response,
37                           CompletionCallback* callback);
38 
39   virtual uint64 GetUploadProgress() const;
40 
41   virtual int ReadResponseHeaders(CompletionCallback* callback);
42 
43   virtual HttpResponseInfo* GetResponseInfo() const;
44 
45   virtual int ReadResponseBody(IOBuffer* buf, int buf_len,
46                                CompletionCallback* callback);
47 
48   virtual bool IsResponseBodyComplete() const;
49 
50   virtual bool CanFindEndOfResponse() const;
51 
52   virtual bool IsMoreDataBuffered() const;
53 
54  private:
55   scoped_refptr<GrowableIOBuffer> read_buf_;
56 
57   scoped_ptr<HttpStreamParser> parser_;
58 
59   DISALLOW_COPY_AND_ASSIGN(HttpBasicStream);
60 };
61 
62 }  // namespace net
63 
64 #endif  // NET_HTTP_HTTP_BASIC_STREAM_H_
65