Package org.apache.derby.impl.drda
Class DRDAString
- java.lang.Object
-
- org.apache.derby.impl.drda.DRDAString
-
final class DRDAString extends java.lang.ObjectThis class provides functionality for reusing buffers and strings when parsing DRDA packets. A byte array representing a string is stored internally. When the string is requested as aStringobject, the byte array is converted to a string, and the string is cached to avoid unnecessary conversion later.
-
-
Field Summary
Fields Modifier and Type Field Description private byte[]bufferBuffer representing the string.private java.lang.StringcachedStringThe previously generated string.private booleanmodifiedTrue if the contents were modified in the previous call tosetBytes.private DDMWriterwriterKeep the DDMWriter as it contains the current CCSID manager being used
-
Constructor Summary
Constructors Constructor Description DRDAString(DDMWriter w)Create a newDRDAStringinstance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleanequalTo(byte[] buf, int offset, int size)Check whether the internal buffer contains the same data as another byte buffer.byte[]getBytes()Return the internal byte array.intlength()Return the length in bytes of the internal string representation.voidsetBytes(byte[] src, int offset, int size)Modify the internal byte buffer.java.lang.StringtoString()Convert the internal byte array to a string.booleanwasModified()Check whether the contents of theDRDAStringwere modified in the previous call tosetBytes().
-
-
-
Field Detail
-
buffer
private byte[] buffer
Buffer representing the string.
-
writer
private final DDMWriter writer
Keep the DDMWriter as it contains the current CCSID manager being used
-
modified
private boolean modified
True if the contents were modified in the previous call tosetBytes.
-
cachedString
private java.lang.String cachedString
The previously generated string.
-
-
Constructor Detail
-
DRDAString
DRDAString(DDMWriter w)
Create a newDRDAStringinstance.- Parameters:
w- aDDMWriterwhich holds current CCSidManager and which encoding is used
-
-
Method Detail
-
equalTo
private boolean equalTo(byte[] buf, int offset, int size)Check whether the internal buffer contains the same data as another byte buffer.- Parameters:
buf- a byte arrayoffset- start position in the byte arraysize- how many bytes to read from the byte array- Returns:
trueif the internal buffer contains the same data as the specified byte array
-
setBytes
public void setBytes(byte[] src, int offset, int size)Modify the internal byte buffer. If the new data is equal to the old data, the cached values are not cleared.- Parameters:
src- the new bytesoffset- start offsetsize- number of bytes to use
-
wasModified
public boolean wasModified()
Check whether the contents of theDRDAStringwere modified in the previous call tosetBytes().- Returns:
trueif the contents were modified
-
toString
public java.lang.String toString()
Convert the internal byte array to a string. The string value is cached.- Overrides:
toStringin classjava.lang.Object- Returns:
- a
Stringvalue
-
length
public int length()
Return the length in bytes of the internal string representation.- Returns:
- length of internal representation
-
getBytes
public byte[] getBytes()
Return the internal byte array. The returned array should not be modified, as it is used internally inDRDAString. The value of the array might be modified by subsequent calls toDRDAString.setBytes().- Returns:
- internal buffer
-
-