Class DRDAString

java.lang.Object
org.apache.derby.impl.drda.DRDAString

final class DRDAString extends 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 a String 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 representing the string.
    private String
    The previously generated string.
    private boolean
    True if the contents were modified in the previous call to setBytes.
    private final DDMWriter
    Keep the DDMWriter as it contains the current CCSID manager being used
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a new DRDAString instance.
  • Method Summary

    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[]
    Return the internal byte array.
    int
    Return the length in bytes of the internal string representation.
    void
    setBytes(byte[] src, int offset, int size)
    Modify the internal byte buffer.
    Convert the internal byte array to a string.
    boolean
    Check whether the contents of the DRDAString were modified in the previous call to setBytes().

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • 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 to setBytes.
    • cachedString

      private String cachedString
      The previously generated string.
  • Constructor Details

    • DRDAString

      DRDAString(DDMWriter w)
      Create a new DRDAString instance.
      Parameters:
      w - a DDMWriter which holds current CCSidManager and which encoding is used
  • Method Details

    • 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 array
      offset - start position in the byte array
      size - 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 bytes
      offset - start offset
      size - number of bytes to use
    • wasModified

      public boolean wasModified()
      Check whether the contents of the DRDAString were modified in the previous call to setBytes().
      Returns:
      true if the contents were modified
    • toString

      public String toString()
      Convert the internal byte array to a string. The string value is cached.
      Overrides:
      toString in class 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 in DRDAString. The value of the array might be modified by subsequent calls to DRDAString.setBytes().
      Returns:
      internal buffer