OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #ifndef CONTENT_BROWSER_STREAMS_STREAM_H_ | 5 #ifndef CONTENT_BROWSER_STREAMS_STREAM_H_ |
6 #define CONTENT_BROWSER_STREAMS_STREAM_H_ | 6 #define CONTENT_BROWSER_STREAMS_STREAM_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
11 #include "content/browser/byte_stream.h" | 11 #include "content/browser/byte_stream.h" |
12 #include "content/common/content_export.h" | 12 #include "content/common/content_export.h" |
13 #include "url/gurl.h" | 13 #include "url/gurl.h" |
14 | 14 |
15 namespace net { | 15 namespace net { |
16 class HttpResponseHeaders; | 16 class HttpResponseHeaders; |
17 class IOBuffer; | 17 class IOBuffer; |
18 } | 18 } |
19 | 19 |
20 namespace content { | 20 namespace content { |
21 | 21 |
22 class StreamHandle; | 22 class StreamHandle; |
23 class StreamHandleImpl; | 23 class StreamHandleImpl; |
24 class StreamReadObserver; | 24 class StreamReadObserver; |
25 class StreamRegistry; | 25 class StreamRegistry; |
26 class StreamWriteObserver; | 26 class StreamWriteObserver; |
| 27 struct ResourceResponse; |
27 | 28 |
28 // A stream that sends data from an arbitrary source to an internal URL | 29 // A stream that sends data from an arbitrary source to an internal URL |
29 // that can be read by an internal consumer. It will continue to pull from the | 30 // that can be read by an internal consumer. It will continue to pull from the |
30 // original URL as long as there is data available. It can be read from | 31 // original URL as long as there is data available. It can be read from |
31 // multiple clients, but only one can be reading at a time. This allows a | 32 // multiple clients, but only one can be reading at a time. This allows a |
32 // reader to consume part of the stream, then pass it along to another client | 33 // reader to consume part of the stream, then pass it along to another client |
33 // to continue processing the stream. | 34 // to continue processing the stream. |
34 class CONTENT_EXPORT Stream : public base::RefCountedThreadSafe<Stream> { | 35 class CONTENT_EXPORT Stream : public base::RefCountedThreadSafe<Stream> { |
35 public: | 36 public: |
36 enum StreamState { | 37 enum StreamState { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 | 72 |
72 // Notifies this stream that it will not be receiving any more data. | 73 // Notifies this stream that it will not be receiving any more data. |
73 void Finalize(); | 74 void Finalize(); |
74 | 75 |
75 // Reads a maximum of |buf_size| from the stream into |buf|. Sets | 76 // Reads a maximum of |buf_size| from the stream into |buf|. Sets |
76 // |*bytes_read| to the number of bytes actually read. | 77 // |*bytes_read| to the number of bytes actually read. |
77 // Returns STREAM_HAS_DATA if data was read, STREAM_EMPTY if no data was read, | 78 // Returns STREAM_HAS_DATA if data was read, STREAM_EMPTY if no data was read, |
78 // and STREAM_COMPLETE if the stream is finalized and all data has been read. | 79 // and STREAM_COMPLETE if the stream is finalized and all data has been read. |
79 StreamState ReadRawData(net::IOBuffer* buf, int buf_size, int* bytes_read); | 80 StreamState ReadRawData(net::IOBuffer* buf, int buf_size, int* bytes_read); |
80 | 81 |
81 scoped_ptr<StreamHandle> CreateHandle( | 82 scoped_ptr<StreamHandle> CreateHandle(); |
82 const GURL& original_url, | |
83 const std::string& mime_type, | |
84 scoped_refptr<net::HttpResponseHeaders> response_headers); | |
85 void CloseHandle(); | 83 void CloseHandle(); |
86 | 84 |
87 // Indicates whether there is space in the buffer to add more data. | 85 // Indicates whether there is space in the buffer to add more data. |
88 bool can_add_data() const { return can_add_data_; } | 86 bool can_add_data() const { return can_add_data_; } |
89 | 87 |
90 const GURL& url() const { return url_; } | 88 const GURL& url() const { return url_; } |
91 | 89 |
92 // For StreamRegistry to remember the last memory usage reported to it. | 90 // For StreamRegistry to remember the last memory usage reported to it. |
93 size_t last_total_buffered_bytes() const { | 91 size_t last_total_buffered_bytes() const { |
94 return last_total_buffered_bytes_; | 92 return last_total_buffered_bytes_; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 | 129 |
132 StreamHandleImpl* stream_handle_; | 130 StreamHandleImpl* stream_handle_; |
133 | 131 |
134 base::WeakPtrFactory<Stream> weak_ptr_factory_; | 132 base::WeakPtrFactory<Stream> weak_ptr_factory_; |
135 DISALLOW_COPY_AND_ASSIGN(Stream); | 133 DISALLOW_COPY_AND_ASSIGN(Stream); |
136 }; | 134 }; |
137 | 135 |
138 } // namespace content | 136 } // namespace content |
139 | 137 |
140 #endif // CONTENT_BROWSER_STREAMS_STREAM_H_ | 138 #endif // CONTENT_BROWSER_STREAMS_STREAM_H_ |
OLD | NEW |