| // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_BZIP_EXTENT_WRITER_H__ | 
 | #define CHROMEOS_PLATFORM_UPDATE_ENGINE_BZIP_EXTENT_WRITER_H__ | 
 |  | 
 | #include <vector> | 
 | #include <bzlib.h> | 
 | #include "update_engine/extent_writer.h" | 
 | #include "update_engine/utils.h" | 
 |  | 
 | // BzipExtentWriter is a concrete ExtentWriter subclass that bzip-decompresses | 
 | // what it's given in Write. It passes the decompressed data to an underlying | 
 | // ExtentWriter. | 
 |  | 
 | namespace chromeos_update_engine { | 
 |  | 
 | class BzipExtentWriter : public ExtentWriter { | 
 |  public: | 
 |   BzipExtentWriter(ExtentWriter* next) : next_(next) { | 
 |     memset(&stream_, 0, sizeof(stream_)); | 
 |   } | 
 |   ~BzipExtentWriter() {} | 
 |  | 
 |   bool Init(int fd, const std::vector<Extent>& extents, uint32_t block_size); | 
 |   bool Write(const void* bytes, size_t count); | 
 |   bool EndImpl(); | 
 |  | 
 |  private: | 
 |   ExtentWriter* const next_;  // The underlying ExtentWriter. | 
 |   bz_stream stream_;  // the libbz2 stream | 
 |   std::vector<char> input_buffer_; | 
 | }; | 
 |  | 
 | }  // namespace chromeos_update_engine | 
 |  | 
 | #endif  // CHROMEOS_PLATFORM_UPDATE_ENGINE_BZIP_EXTENT_WRITER_H__ |