41 lines
1012 B
C++
41 lines
1012 B
C++
// 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_COMPRESSOR_INTERFACE_H_
|
|
#define _BSDIFF_COMPRESSOR_INTERFACE_H_
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include "bsdiff/constants.h"
|
|
|
|
namespace bsdiff {
|
|
|
|
class CompressorInterface {
|
|
public:
|
|
virtual ~CompressorInterface() = default;
|
|
|
|
// Compress and write |size| bytes of input data starting from |buf|.
|
|
virtual bool Write(const uint8_t* buf, size_t size) = 0;
|
|
|
|
// Finish the compression step.
|
|
virtual bool Finish() = 0;
|
|
|
|
// Return the compressed data. This method must be only called after Finish().
|
|
virtual const std::vector<uint8_t>& GetCompressedData() = 0;
|
|
|
|
// Return the type of the current compressor.
|
|
virtual CompressorType Type() const = 0;
|
|
|
|
protected:
|
|
CompressorInterface() = default;
|
|
};
|
|
|
|
} // namespace bsdiff
|
|
|
|
#endif // _BSDIFF_COMPRESSOR_INTERFACE_H_
|