Package com.tangosol.io
Class BinaryDeltaCompressor
java.lang.Object
com.tangosol.io.BinaryDeltaCompressor
- All Implemented Interfaces:
DeltaCompressor
- Direct Known Subclasses:
PofDeltaCompressor
A DeltaCompressor implementation that works with opaque (binary) values.
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
- Author:
- cp 2009.01.06
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final Binary
A delta value that indicates an empty new value.protected static final byte
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 final byte
A format indicator (the first byte of the binary delta) that indicates that the new value is a zero-length binary value.protected static final byte
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 final int
Minimum length of an "extract" block to encode.protected static final Binary
An empty Binary object.protected static final byte
A binary delta operator that instructs theapplyDelta(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 final byte
A binary delta operator that instructs theapplyDelta(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 final byte
A binary delta operator that instructs theapplyDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer)
method that the delta has been fully applied. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionapplyDelta
(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.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.
-
Field Details
-
FMT_EMPTY
protected static final byte FMT_EMPTYA format indicator (the first byte of the binary delta) that indicates that the new value is a zero-length binary value.- See Also:
-
FMT_REPLACE
protected static final byte FMT_REPLACEA format indicator (the first byte of the binary delta) that indicates that the new value is found in its entirety in the delta value. In other words, other than the first byte, the delta is itself the new value.- See Also:
-
FMT_BINDIFF
protected static final byte FMT_BINDIFFA 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. The possible modifications are defined by the OP_* constants.- See Also:
-
OP_EXTRACT
protected static final byte OP_EXTRACTA binary delta operator that instructs theapplyDelta(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.- See Also:
-
OP_APPEND
protected static final byte OP_APPENDA binary delta operator that instructs theapplyDelta(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.- See Also:
-
OP_TERM
protected static final byte OP_TERMA binary delta operator that instructs theapplyDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer)
method that the delta has been fully applied.- See Also:
-
MIN_BLOCK
protected static final int MIN_BLOCKMinimum length of an "extract" block to encode.- See Also:
-
NO_BINARY
An empty Binary object. -
DELTA_TRUNCATE
A delta value that indicates an empty new value.
-
-
Constructor Details
-
BinaryDeltaCompressor
public BinaryDeltaCompressor()Default constructor.
-
-
Method Details
-
extractDelta
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. The generated delta must be a ReadBuffer of non-zero length.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.
- Specified by:
extractDelta
in interfaceDeltaCompressor
- Parameters:
bufOld
- the old valuebufNew
- the new value; must not be null- Returns:
- the changes that must be made to the old value in order to transform it into the new value, or null to indicate no change
-
applyDelta
Apply a delta to an old value in order to create a new value.- Specified by:
applyDelta
in interfaceDeltaCompressor
- Parameters:
bufOld
- the old valuebufDelta
- the delta information returned fromDeltaCompressor.extractDelta(com.tangosol.io.ReadBuffer, com.tangosol.io.ReadBuffer)
to apply to the old value- Returns:
- the new value
-
createDelta
Actually create a delta in the binary delta format. This method is designed to be overridden by subclasses that have more intimate knowledge of the contents of the buffers.- Parameters:
bufOld
- the old valuebufNew
- the new value- Returns:
- a delta in the binary delta format
-