dataOut.writeInt(databaseID);
dataOut.writeLong(sessionID);
dataOut.writeLong(lobID);
dataOut.writeInt(subType);
HsqlByteArrayOutputStream byteArrayOS =
new HsqlByteArrayOutputStream(bufferLength);
byteArrayOS.reset();
byteArrayOS.write(reader, bufferLength / 2);
//
dataOut.writeLong(currentOffset);
dataOut.writeLong(byteArrayOS.size() / 2);
dataOut.write(byteArrayOS.getBuffer(), 0, byteArrayOS.size());
currentOffset += byteArrayOS.size() / 2;
if (byteArrayOS.size() < bufferLength) {
return;
}
//
while (true) {
byteArrayOS.reset();
byteArrayOS.write(reader, bufferLength / 2);
if (byteArrayOS.size() == 0) {
break;
}
//
dataOut.writeByte(mode);
dataOut.writeInt(databaseID);
dataOut.writeLong(sessionID);
dataOut.writeLong(lobID);
dataOut.writeInt(LobResultTypes.REQUEST_SET_CHARS);
dataOut.writeLong(currentOffset);
dataOut.writeLong(byteArrayOS.size() / 2);
dataOut.write(byteArrayOS.getBuffer(), 0, byteArrayOS.size());
currentOffset += byteArrayOS.size() / 2;
if (byteArrayOS.size() < bufferLength) {
break;
}
}
}