Package org.apache.derby.impl.drda
Class DRDAString
- java.lang.Object
-
- org.apache.derby.impl.drda.DRDAString
-
final class DRDAString extends java.lang.Object
This 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 aString
object, 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[]
buffer
Buffer representing the string.private java.lang.String
cachedString
The previously generated string.private boolean
modified
True if the contents were modified in the previous call tosetBytes
.private DDMWriter
writer
Keep the DDMWriter as it contains the current CCSID manager being used
-
Constructor Summary
Constructors Constructor Description DRDAString(DDMWriter w)
Create a newDRDAString
instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private boolean
equalTo(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.int
length()
Return the length in bytes of the internal string representation.void
setBytes(byte[] src, int offset, int size)
Modify the internal byte buffer.java.lang.String
toString()
Convert the internal byte array to a string.boolean
wasModified()
Check whether the contents of theDRDAString
were 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 newDRDAString
instance.- Parameters:
w
- aDDMWriter
which 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:
true
if 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 theDRDAString
were modified in the previous call tosetBytes()
.- Returns:
true
if the contents were modified
-
toString
public java.lang.String toString()
Convert the internal byte array to a string. The string value is cached.- Overrides:
toString
in classjava.lang.Object
- Returns:
- a
String
value
-
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
-
-