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