OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // HttpStreamBase is an interface for reading and writing data to an | 5 // HttpStreamBase is an interface for reading and writing data to an |
6 // HTTP-like stream that keeps the client agnostic of the actual underlying | 6 // HTTP-like stream that keeps the client agnostic of the actual underlying |
7 // transport layer. This provides an abstraction for HttpStream and | 7 // transport layer. This provides an abstraction for HttpStream and |
8 // WebSocketStream. | 8 // WebSocketStream. |
9 | 9 |
10 #ifndef NET_HTTP_HTTP_STREAM_BASE_H_ | 10 #ifndef NET_HTTP_HTTP_STREAM_BASE_H_ |
(...skipping 17 matching lines...) Expand all Loading... |
28 class IOBuffer; | 28 class IOBuffer; |
29 class SSLCertRequestInfo; | 29 class SSLCertRequestInfo; |
30 class SSLInfo; | 30 class SSLInfo; |
31 | 31 |
32 class NET_EXPORT_PRIVATE HttpStreamBase { | 32 class NET_EXPORT_PRIVATE HttpStreamBase { |
33 public: | 33 public: |
34 HttpStreamBase() {} | 34 HttpStreamBase() {} |
35 virtual ~HttpStreamBase() {} | 35 virtual ~HttpStreamBase() {} |
36 | 36 |
37 // Initialize stream. Must be called before calling SendRequest(). | 37 // Initialize stream. Must be called before calling SendRequest(). |
| 38 // |request_info| must outlive the HttpStreamBase. |
38 // Returns a net error code, possibly ERR_IO_PENDING. | 39 // Returns a net error code, possibly ERR_IO_PENDING. |
39 virtual int InitializeStream(const HttpRequestInfo* request_info, | 40 virtual int InitializeStream(const HttpRequestInfo* request_info, |
40 const BoundNetLog& net_log, | 41 const BoundNetLog& net_log, |
41 const CompletionCallback& callback) = 0; | 42 const CompletionCallback& callback) = 0; |
42 | 43 |
43 // Writes the headers and uploads body data to the underlying socket. | 44 // Writes the headers and uploads body data to the underlying socket. |
44 // ERR_IO_PENDING is returned if the operation could not be completed | 45 // ERR_IO_PENDING is returned if the operation could not be completed |
45 // synchronously, in which case the result will be passed to the callback | 46 // synchronously, in which case the result will be passed to the callback |
46 // when available. Returns OK on success. | 47 // when available. Returns OK on success. |
| 48 // |response| must outlive the HttpStreamBase. |
47 virtual int SendRequest(const HttpRequestHeaders& request_headers, | 49 virtual int SendRequest(const HttpRequestHeaders& request_headers, |
48 HttpResponseInfo* response, | 50 HttpResponseInfo* response, |
49 const CompletionCallback& callback) = 0; | 51 const CompletionCallback& callback) = 0; |
50 | 52 |
51 // Reads from the underlying socket until the response headers have been | 53 // Reads from the underlying socket until the response headers have been |
52 // completely received. ERR_IO_PENDING is returned if the operation could | 54 // completely received. ERR_IO_PENDING is returned if the operation could |
53 // not be completed synchronously, in which case the result will be passed | 55 // not be completed synchronously, in which case the result will be passed |
54 // to the callback when available. Returns OK on success. The response | 56 // to the callback when available. Returns OK on success. The response |
55 // headers are available in the HttpResponseInfo returned by GetResponseInfo | 57 // headers are available in the HttpResponseInfo returned by GetResponseInfo |
56 virtual int ReadResponseHeaders(const CompletionCallback& callback) = 0; | 58 virtual int ReadResponseHeaders(const CompletionCallback& callback) = 0; |
(...skipping 25 matching lines...) Expand all Loading... |
82 // eliminate the SetConnectionReused() below. | 84 // eliminate the SetConnectionReused() below. |
83 virtual void Close(bool not_reusable) = 0; | 85 virtual void Close(bool not_reusable) = 0; |
84 | 86 |
85 // Indicates if the response body has been completely read. | 87 // Indicates if the response body has been completely read. |
86 virtual bool IsResponseBodyComplete() const = 0; | 88 virtual bool IsResponseBodyComplete() const = 0; |
87 | 89 |
88 // Indicates that the end of the response is detectable. This means that | 90 // Indicates that the end of the response is detectable. This means that |
89 // the response headers indicate either chunked encoding or content length. | 91 // the response headers indicate either chunked encoding or content length. |
90 // If neither is sent, the server must close the connection for us to detect | 92 // If neither is sent, the server must close the connection for us to detect |
91 // the end of the response. | 93 // the end of the response. |
| 94 // TODO(rch): Rename this method, so that it is clear why it exists |
| 95 // particularly as it applies to QUIC and SPDY for which the end of the |
| 96 // response is always findable. |
92 virtual bool CanFindEndOfResponse() const = 0; | 97 virtual bool CanFindEndOfResponse() const = 0; |
93 | 98 |
94 // A stream exists on top of a connection. If the connection has been used | 99 // A stream exists on top of a connection. If the connection has been used |
95 // to successfully exchange data in the past, error handling for the | 100 // to successfully exchange data in the past, error handling for the |
96 // stream is done differently. This method returns true if the underlying | 101 // stream is done differently. This method returns true if the underlying |
97 // connection is reused or has been connected and idle for some time. | 102 // connection is reused or has been connected and idle for some time. |
98 virtual bool IsConnectionReused() const = 0; | 103 virtual bool IsConnectionReused() const = 0; |
99 virtual void SetConnectionReused() = 0; | 104 virtual void SetConnectionReused() = 0; |
100 | 105 |
101 // Checks whether the current state of the underlying connection | 106 // Checks whether the current state of the underlying connection |
(...skipping 20 matching lines...) Expand all Loading... |
122 // draining is complete. | 127 // draining is complete. |
123 virtual void Drain(HttpNetworkSession* session) = 0; | 128 virtual void Drain(HttpNetworkSession* session) = 0; |
124 | 129 |
125 private: | 130 private: |
126 DISALLOW_COPY_AND_ASSIGN(HttpStreamBase); | 131 DISALLOW_COPY_AND_ASSIGN(HttpStreamBase); |
127 }; | 132 }; |
128 | 133 |
129 } // namespace net | 134 } // namespace net |
130 | 135 |
131 #endif // NET_HTTP_HTTP_STREAM_BASE_H_ | 136 #endif // NET_HTTP_HTTP_STREAM_BASE_H_ |
OLD | NEW |