| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 // Filter performs filtering on data streams. Sample usage: | 5 // Filter performs filtering on data streams. Sample usage: |
| 6 // | 6 // |
| 7 // IStream* pre_filter_source; | 7 // IStream* pre_filter_source; |
| 8 // ... | 8 // ... |
| 9 // Filter* filter = Filter::Factory(filter_type, size); | 9 // Filter* filter = Filter::Factory(filter_type, size); |
| 10 // int pre_filter_data_len = filter->stream_buffer_size(); | 10 // int pre_filter_data_len = filter->stream_buffer_size(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 | 28 |
| 29 #ifndef NET_BASE_FILTER_H__ | 29 #ifndef NET_BASE_FILTER_H__ |
| 30 #define NET_BASE_FILTER_H__ | 30 #define NET_BASE_FILTER_H__ |
| 31 | 31 |
| 32 #include <string> | 32 #include <string> |
| 33 #include <vector> | 33 #include <vector> |
| 34 | 34 |
| 35 #include "base/basictypes.h" | 35 #include "base/basictypes.h" |
| 36 #include "base/scoped_ptr.h" | 36 #include "base/scoped_ptr.h" |
| 37 #include "base/time.h" | 37 #include "base/time.h" |
| 38 #include "net/base/io_buffer.h" |
| 38 #include "googleurl/src/gurl.h" | 39 #include "googleurl/src/gurl.h" |
| 39 #include "testing/gtest/include/gtest/gtest_prod.h" | 40 #include "testing/gtest/include/gtest/gtest_prod.h" |
| 40 | 41 |
| 41 class Filter { | 42 class Filter { |
| 42 public: | 43 public: |
| 43 // Return values of function ReadFilteredData. | 44 // Return values of function ReadFilteredData. |
| 44 enum FilterStatus { | 45 enum FilterStatus { |
| 45 // Read filtered data successfully | 46 // Read filtered data successfully |
| 46 FILTER_OK, | 47 FILTER_OK, |
| 47 // Read filtered data successfully, and the data in the buffer has been | 48 // Read filtered data successfully, and the data in the buffer has been |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 // (decoding) order. For example, types[0] = "sdch", types[1] = "gzip" will | 85 // (decoding) order. For example, types[0] = "sdch", types[1] = "gzip" will |
| 85 // cause data to first be gunizip filtered, and the resulting output from that | 86 // cause data to first be gunizip filtered, and the resulting output from that |
| 86 // filter will be sdch decoded. | 87 // filter will be sdch decoded. |
| 87 static Filter* Factory(const std::vector<FilterType>& filter_types, | 88 static Filter* Factory(const std::vector<FilterType>& filter_types, |
| 88 int buffer_size); | 89 int buffer_size); |
| 89 | 90 |
| 90 // External call to obtain data from this filter chain. If ther is no | 91 // External call to obtain data from this filter chain. If ther is no |
| 91 // next_filter_, then it obtains data from this specific filter. | 92 // next_filter_, then it obtains data from this specific filter. |
| 92 FilterStatus ReadData(char* dest_buffer, int* dest_len); | 93 FilterStatus ReadData(char* dest_buffer, int* dest_len); |
| 93 | 94 |
| 94 // Returns a pointer to the beginning of stream_buffer_. | 95 // Returns a pointer to the stream_buffer_. |
| 95 char* stream_buffer() const { return stream_buffer_.get(); } | 96 net::IOBuffer* stream_buffer() const { return stream_buffer_.get(); } |
| 96 | 97 |
| 97 // Returns the maximum size of stream_buffer_ in number of chars. | 98 // Returns the maximum size of stream_buffer_ in number of chars. |
| 98 int stream_buffer_size() const { return stream_buffer_size_; } | 99 int stream_buffer_size() const { return stream_buffer_size_; } |
| 99 | 100 |
| 100 // Returns the total number of chars remaining in stream_buffer_ to be | 101 // Returns the total number of chars remaining in stream_buffer_ to be |
| 101 // filtered. | 102 // filtered. |
| 102 // | 103 // |
| 103 // If the function returns 0 then all data have been filtered and the caller | 104 // If the function returns 0 then all data have been filtered and the caller |
| 104 // is safe to copy new data into stream_buffer_. | 105 // is safe to copy new data into stream_buffer_. |
| 105 int stream_data_len() const { return stream_data_len_; } | 106 int stream_data_len() const { return stream_data_len_; } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 static Filter* PrependNewFilter(FilterType type_id, int buffer_size, | 171 static Filter* PrependNewFilter(FilterType type_id, int buffer_size, |
| 171 Filter* filter_list); | 172 Filter* filter_list); |
| 172 | 173 |
| 173 FilterStatus last_status() const { return last_status_; } | 174 FilterStatus last_status() const { return last_status_; } |
| 174 | 175 |
| 175 base::Time connect_time() const { return connect_time_; } | 176 base::Time connect_time() const { return connect_time_; } |
| 176 | 177 |
| 177 bool was_cached() const { return was_cached_; } | 178 bool was_cached() const { return was_cached_; } |
| 178 | 179 |
| 179 // Buffer to hold the data to be filtered. | 180 // Buffer to hold the data to be filtered. |
| 180 scoped_array<char> stream_buffer_; | 181 scoped_refptr<net::IOBuffer> stream_buffer_; |
| 181 | 182 |
| 182 // Maximum size of stream_buffer_ in number of chars. | 183 // Maximum size of stream_buffer_ in number of chars. |
| 183 int stream_buffer_size_; | 184 int stream_buffer_size_; |
| 184 | 185 |
| 185 // Pointer to the next data in stream_buffer_ to be filtered. | 186 // Pointer to the next data in stream_buffer_ to be filtered. |
| 186 char* next_stream_data_; | 187 char* next_stream_data_; |
| 187 | 188 |
| 188 // Total number of remaining chars in stream_buffer_ to be filtered. | 189 // Total number of remaining chars in stream_buffer_ to be filtered. |
| 189 int stream_data_len_; | 190 int stream_data_len_; |
| 190 | 191 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 208 scoped_ptr<Filter> next_filter_; | 209 scoped_ptr<Filter> next_filter_; |
| 209 // Remember what status or local filter last returned so we can better handle | 210 // Remember what status or local filter last returned so we can better handle |
| 210 // chained filters. | 211 // chained filters. |
| 211 FilterStatus last_status_; | 212 FilterStatus last_status_; |
| 212 | 213 |
| 213 DISALLOW_COPY_AND_ASSIGN(Filter); | 214 DISALLOW_COPY_AND_ASSIGN(Filter); |
| 214 }; | 215 }; |
| 215 | 216 |
| 216 #endif // NET_BASE_FILTER_H__ | 217 #endif // NET_BASE_FILTER_H__ |
| 217 | 218 |
| OLD | NEW |