Class DeltaEncoder


  • public class DeltaEncoder
    extends Object
    Encodes an instruction stream for BinaryDelta.
    • Constructor Summary

      Constructors 
      Constructor Description
      DeltaEncoder​(OutputStream out, long baseSize, long resultSize)
      Create an encoder with no upper bound on the instruction stream size.
      DeltaEncoder​(OutputStream out, long baseSize, long resultSize, int limit)
      Create an encoder with an upper limit on the instruction size.
    • Constructor Detail

      • DeltaEncoder

        public DeltaEncoder​(OutputStream out,
                            long baseSize,
                            long resultSize)
                     throws IOException
        Create an encoder with no upper bound on the instruction stream size.
        Parameters:
        out - buffer to store the instructions written.
        baseSize - size of the base object, in bytes.
        resultSize - size of the resulting object, after applying this instruction stream to the base object, in bytes.
        Throws:
        IOException - the output buffer cannot store the instruction stream's header with the size fields.
      • DeltaEncoder

        public DeltaEncoder​(OutputStream out,
                            long baseSize,
                            long resultSize,
                            int limit)
                     throws IOException
        Create an encoder with an upper limit on the instruction size.
        Parameters:
        out - buffer to store the instructions written.
        baseSize - size of the base object, in bytes.
        resultSize - size of the resulting object, after applying this instruction stream to the base object, in bytes.
        limit - maximum number of bytes to write to the out buffer declaring the stream is over limit and should be discarded. May be 0 to specify an infinite limit.
        Throws:
        IOException - the output buffer cannot store the instruction stream's header with the size fields.
    • Method Detail

      • getSize

        public int getSize()
        Get current size of the delta stream, in bytes.
        Returns:
        current size of the delta stream, in bytes.
      • insert

        public boolean insert​(String text)
                       throws IOException
        Insert a literal string of text, in UTF-8 encoding.
        Parameters:
        text - the string to insert.
        Returns:
        true if the insert fits within the limit; false if the insert would cause the instruction stream to exceed the limit.
        Throws:
        IOException - the instruction buffer can't store the instructions.
      • insert

        public boolean insert​(byte[] text)
                       throws IOException
        Insert a literal binary sequence.
        Parameters:
        text - the binary to insert.
        Returns:
        true if the insert fits within the limit; false if the insert would cause the instruction stream to exceed the limit.
        Throws:
        IOException - the instruction buffer can't store the instructions.
      • insert

        public boolean insert​(byte[] text,
                              int off,
                              int cnt)
                       throws IOException
        Insert a literal binary sequence.
        Parameters:
        text - the binary to insert.
        off - offset within text to start copying from.
        cnt - number of bytes to insert.
        Returns:
        true if the insert fits within the limit; false if the insert would cause the instruction stream to exceed the limit.
        Throws:
        IOException - the instruction buffer can't store the instructions.
      • copy

        public boolean copy​(long offset,
                            int cnt)
                     throws IOException
        Create a copy instruction to copy from the base object.
        Parameters:
        offset - position in the base object to copy from. This is absolute, from the beginning of the base.
        cnt - number of bytes to copy.
        Returns:
        true if the copy fits within the limit; false if the copy would cause the instruction stream to exceed the limit.
        Throws:
        IOException - the instruction buffer cannot store the instructions.