in java/tsfile/src/main/java/org/apache/tsfile/read/common/DescReadWriteBatchData.java [420:510]
public void serializeData(DataOutputStream outputStream) throws IOException {
switch (dataType) {
case BOOLEAN:
for (int i = length() - 1; i >= 0; i--) {
outputStream.writeLong(getTimeByIndex(i));
outputStream.writeBoolean(getBooleanByIndex(i));
}
break;
case DOUBLE:
for (int i = length() - 1; i >= 0; i--) {
outputStream.writeLong(getTimeByIndex(i));
outputStream.writeDouble(getDoubleByIndex(i));
}
break;
case FLOAT:
for (int i = length() - 1; i >= 0; i--) {
outputStream.writeLong(getTimeByIndex(i));
outputStream.writeFloat(getFloatByIndex(i));
}
break;
case TEXT:
case BLOB:
case STRING:
for (int i = length() - 1; i >= 0; i--) {
outputStream.writeLong(getTimeByIndex(i));
Binary binary = getBinaryByIndex(i);
outputStream.writeInt(binary.getLength());
outputStream.write(binary.getValues());
}
break;
case INT64:
case TIMESTAMP:
for (int i = length() - 1; i >= 0; i--) {
outputStream.writeLong(getTimeByIndex(i));
outputStream.writeLong(getLongByIndex(i));
}
break;
case INT32:
case DATE:
for (int i = length() - 1; i >= 0; i--) {
outputStream.writeLong(getTimeByIndex(i));
outputStream.writeInt(getIntByIndex(i));
}
break;
case VECTOR:
for (int i = length() - 1; i >= 0; i--) {
outputStream.writeLong(getTimeByIndex(i));
TsPrimitiveType[] values = getVectorByIndex(i);
outputStream.writeInt(values.length);
for (TsPrimitiveType value : values) {
if (value == null) {
outputStream.write(0);
} else {
outputStream.write(1);
outputStream.write(value.getDataType().serialize());
switch (value.getDataType()) {
case BOOLEAN:
outputStream.writeBoolean(value.getBoolean());
break;
case DOUBLE:
outputStream.writeDouble(value.getDouble());
break;
case FLOAT:
outputStream.writeFloat(value.getFloat());
break;
case TEXT:
case BLOB:
case STRING:
Binary binary = value.getBinary();
outputStream.writeInt(binary.getLength());
outputStream.write(binary.getValues());
break;
case INT64:
case TIMESTAMP:
outputStream.writeLong(value.getLong());
break;
case INT32:
case DATE:
outputStream.writeInt(value.getInt());
break;
default:
throw new UnSupportedDataTypeException(String.valueOf(dataType));
}
}
}
}
break;
default:
throw new UnSupportedDataTypeException(String.valueOf(dataType));
}
}