in modules/core/src/main/java/org/apache/ignite/internal/binary/RawBinaryObjectExtractor.java [83:270]
void skipObject() {
int objStartPos = in.position();
byte type = in.readByte();
switch (type) {
case GridBinaryMarshaller.NULL:
break;
case GridBinaryMarshaller.OBJ:
skipBytes(BinaryUtils.length(in, objStartPos) - /** Object type. */ Byte.BYTES);
break;
case GridBinaryMarshaller.BINARY_OBJ:
skipBytes(in.readInt());
skipBytes(Integer.BYTES); // Offset.
break;
case GridBinaryMarshaller.BYTE:
case GridBinaryMarshaller.BOOLEAN:
skipBytes(Byte.BYTES);
break;
case GridBinaryMarshaller.CHAR:
skipBytes(Character.BYTES);
break;
case GridBinaryMarshaller.SHORT:
skipBytes(Short.BYTES);
break;
case GridBinaryMarshaller.FLOAT:
skipBytes(Float.BYTES);
break;
case GridBinaryMarshaller.HANDLE:
case GridBinaryMarshaller.INT:
skipBytes(Integer.BYTES);
break;
case GridBinaryMarshaller.ENUM:
case GridBinaryMarshaller.BINARY_ENUM: {
skipTypeId();
skipBytes(Integer.BYTES); // Ordinal.
break;
}
case GridBinaryMarshaller.LONG:
case GridBinaryMarshaller.DATE:
case GridBinaryMarshaller.TIME:
skipBytes(Long.BYTES);
break;
case GridBinaryMarshaller.DOUBLE:
skipBytes(Double.BYTES);
break;
case GridBinaryMarshaller.OPTM_MARSH:
case GridBinaryMarshaller.STRING:
skipBytes(in.readInt());
break;
case GridBinaryMarshaller.DECIMAL:
skipBytes(Integer.BYTES); // Scale.
skipBytes(in.readInt());
break;
case GridBinaryMarshaller.UUID:
skipBytes(Long.BYTES + Long.BYTES);
break;
case GridBinaryMarshaller.TIMESTAMP:
skipBytes(Long.BYTES + Integer.BYTES);
break;
case GridBinaryMarshaller.BYTE_ARR:
case GridBinaryMarshaller.BOOLEAN_ARR:
skipBytes(in.readInt() * Byte.BYTES);
break;
case GridBinaryMarshaller.CHAR_ARR:
skipBytes(in.readInt() * Character.BYTES);
break;
case GridBinaryMarshaller.SHORT_ARR:
skipBytes(in.readInt() * Short.BYTES);
break;
case GridBinaryMarshaller.INT_ARR:
skipBytes(in.readInt() * Integer.BYTES);
break;
case GridBinaryMarshaller.FLOAT_ARR:
skipBytes(in.readInt() * Float.BYTES);
break;
case GridBinaryMarshaller.LONG_ARR:
skipBytes(in.readInt() * Long.BYTES);
break;
case GridBinaryMarshaller.DOUBLE_ARR:
skipBytes(in.readInt() * Double.BYTES);
break;
case GridBinaryMarshaller.DECIMAL_ARR:
case GridBinaryMarshaller.DATE_ARR:
case GridBinaryMarshaller.TIMESTAMP_ARR:
case GridBinaryMarshaller.TIME_ARR:
case GridBinaryMarshaller.UUID_ARR:
case GridBinaryMarshaller.STRING_ARR: {
skipCortege();
break;
}
case GridBinaryMarshaller.ENUM_ARR:
case GridBinaryMarshaller.OBJ_ARR: {
skipTypeId();
skipCortege();
break;
}
case GridBinaryMarshaller.COL: {
int size = in.readInt();
skipBytes(Byte.BYTES); // Collection type.
skipCortege(size);
break;
}
case GridBinaryMarshaller.MAP: {
int size = in.readInt() * 2;
skipBytes(Byte.BYTES); // Map type.
skipCortege(size);
break;
}
case GridBinaryMarshaller.CLASS: {
skipTypeId();
break;
}
case GridBinaryMarshaller.PROXY: {
int size = in.readInt();
for (int i = 0; i < size; i++)
skipTypeId(); // Interface type.
skipObject();
break;
}
default:
throw new BinaryObjectException("Unsupported binary type [type=" + type + ']');
}
}