| 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 |