1 // Copyright (c) 2012 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 // HttpStream provides an abstraction for a basic http streams, SPDY, and QUIC. 6 // The HttpStream subtype is expected to manage the underlying transport 7 // appropriately. For example, a basic http stream will return the transport 8 // socket to the pool for reuse. SPDY streams on the other hand leave the 9 // transport socket management to the SpdySession. 10 11 #ifndef NET_HTTP_HTTP_STREAM_H_ 12 #define NET_HTTP_HTTP_STREAM_H_ 13 14 #include "base/basictypes.h" 15 #include "net/base/completion_callback.h" 16 #include "net/base/net_export.h" 17 #include "net/base/upload_progress.h" 18 #include "net/http/http_stream_base.h" 19 20 namespace net { 21 22 class IOBuffer; 23 24 class NET_EXPORT_PRIVATE HttpStream : public HttpStreamBase { 25 public: HttpStream()26 HttpStream() {} ~HttpStream()27 virtual ~HttpStream() {} 28 29 // Queries the UploadDataStream for its progress (bytes sent). 30 virtual UploadProgress GetUploadProgress() const = 0; 31 32 // Returns a new (not initialized) stream using the same underlying 33 // connection and invalidates the old stream - no further methods should be 34 // called on the old stream. The caller should ensure that the response body 35 // from the previous request is drained before calling this method. If the 36 // subclass does not support renewing the stream, NULL is returned. 37 virtual HttpStream* RenewStreamForAuth() = 0; 38 39 private: 40 DISALLOW_COPY_AND_ASSIGN(HttpStream); 41 }; 42 43 } // namespace net 44 45 #endif // NET_HTTP_HTTP_STREAM_H_ 46