• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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