// Copyright 2017 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 _BSDIFF_BROTLI_COMPRESSOR_H_
#define _BSDIFF_BROTLI_COMPRESSOR_H_

#include <stdint.h>

#include <vector>

#include <brotli/encode.h>

#include "bsdiff/compressor_buffer.h"
#include "bsdiff/compressor_interface.h"
#include "bsdiff/constants.h"

namespace bsdiff {

class BrotliCompressor : public CompressorInterface {
 public:
  // Create a brotli compressor with the compression quality |quality|. As the
  // value of quality increases, the compression becomes better but slower.
  // The valid range of quality is between BROTLI_MIN_QUALITY and
  // BROTLI_MAX_QUALITY; and the caller is responsible for the validity check.
  explicit BrotliCompressor(int quality);
  ~BrotliCompressor() override;

  // CompressorInterface overrides.
  bool Write(const uint8_t* buf, size_t size) override;
  bool Finish() override;
  const std::vector<uint8_t>& GetCompressedData() override;
  CompressorType Type() const override { return CompressorType::kBrotli; }

 private:
  BrotliEncoderState* brotli_encoder_state_;

  CompressorBuffer comp_buffer_;
};

}  // namespace bsdiff

#endif  // _BSDIFF_BROTLI_COMPRESSOR_H_
