Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: net/base/bzip2_filter.h

Issue 466038: Remove bzip2 decoding support completely. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/base/DEPS ('k') | net/base/bzip2_filter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4 //
5 // BZip2Filter applies bzip2 content encoding/decoding to a datastream.
6 // Since it is a new feature, and no specification said what 's bzip2 content
7 // composed of in http protocol. So I assume with bzip2 encoding the content
8 // is full format, which means the content should carry complete bzip2 head,
9 // such as inlcude magic number 1(BZh), block size bit, magic number 2(0x31,
10 // 0x41, 0x59, 0x26, 0xx53, 0x59)
11 // Maybe need to inserts a bzlib2 header to the data stream before calling
12 // decompression functionality, but at now I do not meet this sort of real
13 // scenarios. So let's see the further requests.
14 //
15 // This BZip2Filter internally uses third_party/bzip2 library to do decoding.
16 //
17 // BZip2Filter is also a subclass of Filter. See the latter's header file
18 // filter.h for sample usage.
19
20 #ifndef NET_BASE_BZIP2_FILTER_H_
21 #define NET_BASE_BZIP2_FILTER_H_
22
23 #if defined(USE_SYSTEM_LIBBZ2)
24 #include <bzlib.h>
25 #else
26 #include "third_party/bzip2/bzlib.h"
27 #endif
28
29 #include "base/scoped_ptr.h"
30 #include "net/base/filter.h"
31
32 class BZip2Filter : public Filter {
33 public:
34 explicit BZip2Filter(const FilterContext& filter_context);
35
36 virtual ~BZip2Filter();
37
38 // Initializes filter decoding mode and internal control blocks.
39 // Parameter use_small_memory specifies whether use small memory
40 // to decompresss data. If small is nonzero, the bzip2 library will
41 // use an alternative decompression algorithm which uses less memory
42 // but at the cost of decompressing more slowly (roughly speaking,
43 // half the speed, but the maximum memory requirement drops to
44 // around 2300k). For more information, see doc in http://www.bzip.org.
45 // The function returns true if success and false otherwise.
46 // The filter can only be initialized once.
47 bool InitDecoding(bool use_small_memory);
48
49 // Decodes the pre-filter data and writes the output into the dest_buffer
50 // passed in.
51 // The function returns FilterStatus. See filter.h for its description.
52 //
53 // Since BZ2_bzDecompress need a full BZip header for decompression, so
54 // the incoming data should have the full BZip header, otherwise this
55 // function will give you nothing with FILTER_ERROR.
56 //
57 // Upon entry, *dest_len is the total size (in number of chars) of the
58 // destination buffer. Upon exit, *dest_len is the actual number of chars
59 // written into the destination buffer.
60 //
61 // This function will fail if there is no pre-filter data in the
62 // stream_buffer_. On the other hand, *dest_len can be 0 upon successful
63 // return. For example, the internal zlib may process some pre-filter data
64 // but not produce output yet.
65 virtual FilterStatus ReadFilteredData(char* dest_buffer, int* dest_len);
66
67 private:
68 enum DecodingStatus {
69 DECODING_UNINITIALIZED,
70 DECODING_IN_PROGRESS,
71 DECODING_DONE,
72 DECODING_ERROR
73 };
74
75 // Tracks the status of decoding.
76 // This variable is initialized by InitDecoding and updated only by
77 // ReadFilteredData.
78 DecodingStatus decoding_status_;
79
80 // The control block of bzip which actually does the decoding.
81 // This data structure is initialized by InitDecoding and updated in
82 // ReadFilteredData.
83 scoped_ptr<bz_stream> bzip2_data_stream_;
84
85 DISALLOW_COPY_AND_ASSIGN(BZip2Filter);
86 };
87
88 #endif // NET_BASE_BZIP2_FILTER_H_
OLDNEW
« no previous file with comments | « net/base/DEPS ('k') | net/base/bzip2_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698