org.eclipse.jgit.internal.storage.pack

## Class DeltaEncoder

- java.lang.Object
- - org.eclipse.jgit.internal.storage.pack.DeltaEncoder

    public class DeltaEncoder
    extends Object

Encodes an instruction stream for `BinaryDelta`.

### Constructor Summary

Constructors
Constructor and 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.

### Method Summary

All Methods Instance Methods Concrete Methods
`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(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(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()

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.