blob: f752b5e0f4c92df5222b0191173074e94c7f911f [file] [log] [blame]
Tianjie Xu65288122017-10-13 15:10:58 -07001// Copyright 2017 The Chromium OS 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#ifndef _BSDIFF_BZ2_DECOMPRESSOR_H_
6#define _BSDIFF_BZ2_DECOMPRESSOR_H_
7
8#include <bzlib.h>
9
10#include "bsdiff/decompressor_interface.h"
11
12namespace bsdiff {
13
14class BZ2Decompressor : public DecompressorInterface {
15 public:
16 BZ2Decompressor() = default;
Alex Deymo942194f2018-03-12 19:15:43 +010017 ~BZ2Decompressor();
Tianjie Xu65288122017-10-13 15:10:58 -070018
19 bool SetInputData(const uint8_t* input_data, size_t size) override;
20
21 bool Read(uint8_t* output_data, size_t bytes_to_output) override;
22
23 bool Close() override;
24
25 private:
Alex Deymo942194f2018-03-12 19:15:43 +010026 // The low-level bzip2 stream.
Tianjie Xu65288122017-10-13 15:10:58 -070027 bz_stream stream_;
Alex Deymo942194f2018-03-12 19:15:43 +010028
29 // Whether the stream_ is initialized.
30 bool stream_initialized_{false};
Tianjie Xu65288122017-10-13 15:10:58 -070031};
32
33} // namespace bsdiff
34
Alex Deymo9bb4ddb2018-02-14 16:30:54 +010035#endif