// 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_