blob: f3121a9049f37d46f4b041ab4e163632130ad5b0 [file] [log] [blame]
Andrew de los Reyes80061062010-02-04 14:25:00 -08001// Copyright (c) 2009 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
Alex Deymo759c2752014-03-17 21:09:36 -07005#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_BZIP_EXTENT_WRITER_H_
6#define CHROMEOS_PLATFORM_UPDATE_ENGINE_BZIP_EXTENT_WRITER_H_
Andrew de los Reyes80061062010-02-04 14:25:00 -08007
8#include <vector>
9#include <bzlib.h>
10#include "update_engine/extent_writer.h"
11#include "update_engine/utils.h"
12
13// BzipExtentWriter is a concrete ExtentWriter subclass that bzip-decompresses
14// what it's given in Write. It passes the decompressed data to an underlying
15// ExtentWriter.
16
17namespace chromeos_update_engine {
18
19class BzipExtentWriter : public ExtentWriter {
20 public:
Alex Vakulenkod2779df2014-06-16 13:19:00 -070021 explicit BzipExtentWriter(ExtentWriter* next) : next_(next) {
Andrew de los Reyes80061062010-02-04 14:25:00 -080022 memset(&stream_, 0, sizeof(stream_));
23 }
24 ~BzipExtentWriter() {}
25
Andrew de los Reyes09e56d62010-04-23 13:45:53 -070026 bool Init(int fd, const std::vector<Extent>& extents, uint32_t block_size);
Andrew de los Reyes80061062010-02-04 14:25:00 -080027 bool Write(const void* bytes, size_t count);
28 bool EndImpl();
29
30 private:
31 ExtentWriter* const next_; // The underlying ExtentWriter.
32 bz_stream stream_; // the libbz2 stream
33 std::vector<char> input_buffer_;
34};
35
36} // namespace chromeos_update_engine
37
Alex Deymo759c2752014-03-17 21:09:36 -070038#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_BZIP_EXTENT_WRITER_H_