Class DeltaEncoder


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

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean copy​(long offset, int cnt)
      Create a copy instruction to copy from the base object.
      int getSize()  
      boolean insert​(byte[] text)
      Insert a literal binary sequence.
      boolean insert​(byte[] text, int off, int cnt)
      Insert a literal binary sequence.
      boolean insert​(java.lang.String text)
      Insert a literal string of text, in UTF-8 encoding.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DeltaEncoder

        public DeltaEncoder​(java.io.OutputStream out,
                            long baseSize,
                            long resultSize)
                     throws java.io.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:
        java.io.IOException - the output buffer cannot store the instruction stream's header with the size fields.
      • DeltaEncoder

        public DeltaEncoder​(java.io.OutputStream out,
                            long baseSize,
                            long resultSize,
                            int limit)
                     throws java.io.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:
        java.io.IOException - the output buffer cannot store the instruction stream's header with the size fields.
    • Method Detail

      • getSize

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

        public boolean insert​(java.lang.String text)
                       throws java.io.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:
        java.io.IOException - the instruction buffer can't store the instructions.
      • insert

        public boolean insert​(byte[] text)
                       throws java.io.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:
        java.io.IOException - the instruction buffer can't store the instructions.
      • insert

        public boolean insert​(byte[] text,
                              int off,
                              int cnt)
                       throws java.io.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:
        java.io.IOException - the instruction buffer can't store the instructions.
      • copy

        public boolean copy​(long offset,
                            int cnt)
                     throws java.io.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:
        java.io.IOException - the instruction buffer cannot store the instructions.