Home | History | Annotate | Download | only in bsdiff
      1 // Copyright 2017 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 
      5 #ifndef _BSDIFF_COMPRESSOR_INTERFACE_H_
      6 #define _BSDIFF_COMPRESSOR_INTERFACE_H_
      7 
      8 #include <stddef.h>
      9 #include <stdint.h>
     10 
     11 #include <memory>
     12 #include <vector>
     13 
     14 #include "bsdiff/constants.h"
     15 
     16 namespace bsdiff {
     17 
     18 class CompressorInterface {
     19  public:
     20   virtual ~CompressorInterface() = default;
     21 
     22   // Compress and write |size| bytes of input data starting from |buf|.
     23   virtual bool Write(const uint8_t* buf, size_t size) = 0;
     24 
     25   // Finish the compression step.
     26   virtual bool Finish() = 0;
     27 
     28   // Return the compressed data. This method must be only called after Finish().
     29   virtual const std::vector<uint8_t>& GetCompressedData() = 0;
     30 
     31   // Return the type of the current compressor.
     32   virtual CompressorType Type() = 0;
     33 
     34  protected:
     35   CompressorInterface() = default;
     36 };
     37 
     38 }  // namespace bsdiff
     39 
     40 #endif  // _BSDIFF_COMPRESSOR_INTERFACE_H_
     41