public class BinaryDeltaCompressor extends Object implements DeltaCompressor
The delta format is composed of a leading byte that indicates the format; the format indicator byte is one of the FMT_* field values. If the delta value does not begin with one of the FMT_* indicators, then the delta value is itself the new value. If the delta is null, then it indicates no change. The grammar follows:
BinaryDelta: FMT_EMPTY FMT_BINDIFF BinaryChangeList-opt OP_TERM FMT_REPLACE-opt Bytes null BinaryChangeList: OP_EXTRACT Offset Length BinaryChangeList-opt OP_APPEND Length Bytes BinaryChangeList-opt Offset: Length: packed-integer Bytes: byte Bytes-opt
Modifier and Type | Field and Description |
---|---|
protected static Binary |
DELTA_TRUNCATE
A delta value that indicates an empty new value.
|
protected static byte |
FMT_BINDIFF
A format indicator (the first byte of the binary delta) that indicates that the new value is formed by applying a series of modifications to the old value.
|
protected static byte |
FMT_EMPTY
A format indicator (the first byte of the binary delta) that indicates that the new value is a zero-length binary value.
|
protected static byte |
FMT_REPLACE
A format indicator (the first byte of the binary delta) that indicates that the new value is found in its entirety in the delta value.
|
protected static int |
MIN_BLOCK
Minimum length of an "extract" block to encode.
|
protected static Binary |
NO_BINARY
An empty Binary object.
|
protected static byte |
OP_APPEND
A binary delta operator that instructs the
applyDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer) method to copy the following bytes from the delta value and append them to the new value. |
protected static byte |
OP_EXTRACT
A binary delta operator that instructs the
applyDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer) method to extract bytes from the old value and append them to the new value. |
protected static byte |
OP_TERM
A binary delta operator that instructs the
applyDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer) method that the delta has been fully applied. |
Constructor and Description |
---|
BinaryDeltaCompressor()
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
ReadBuffer |
applyDelta(ReadBuffer bufOld, ReadBuffer bufDelta)
Apply a delta to an old value in order to create a new value.
|
protected ReadBuffer |
createDelta(ReadBuffer bufOld, ReadBuffer bufNew)
Actually create a delta in the binary delta format.
|
ReadBuffer |
extractDelta(ReadBuffer bufOld, ReadBuffer bufNew)
Compare an old value to a new value and generate a delta that represents the changes that must be made to the old value in order to transform it into the new value.
|
protected static final byte FMT_EMPTY
protected static final byte FMT_REPLACE
protected static final byte FMT_BINDIFF
protected static final byte OP_EXTRACT
applyDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer)
method to extract bytes from the old value and append them to the new value. The format is the one-byte OP_EXTRACT indicator followed by a packed int offset and packed int length. The offset and length indicate the region of the old value to extract and append to the new value.protected static final byte OP_APPEND
applyDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer)
method to copy the following bytes from the delta value and append them to the new value. The format is the one-byte OP_APPEND indicator followed by a packed int length and then a series of bytes. The length indicates the length of the series of bytes to copy from the delta value and append to the new value.protected static final byte OP_TERM
applyDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer)
method that the delta has been fully applied.protected static final int MIN_BLOCK
protected static final Binary NO_BINARY
protected static final Binary DELTA_TRUNCATE
public ReadBuffer extractDelta(ReadBuffer bufOld, ReadBuffer bufNew)
If the old value is null, the generated delta must be a "replace", meaning that applying it to any value must produce the specified new value.
extractDelta
in interface DeltaCompressor
bufOld
- the old valuebufNew
- the new value; must not be nullpublic ReadBuffer applyDelta(ReadBuffer bufOld, ReadBuffer bufDelta)
applyDelta
in interface DeltaCompressor
bufOld
- the old valuebufDelta
- the delta information returned from DeltaCompressor.extractDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer)
to apply to the old valueprotected ReadBuffer createDelta(ReadBuffer bufOld, ReadBuffer bufNew)
bufOld
- the old valuebufNew
- the new value