/** {@inheritDoc} */ @Override public BinarySerializedFieldComparator createFieldComparator() { int schemaOff = BinaryPrimitives.readInt(ptr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS); short flags = BinaryPrimitives.readShort(ptr, start + GridBinaryMarshaller.FLAGS_POS); int fieldIdLen = BinaryUtils.isCompactFooter(flags) ? 0 : BinaryUtils.FIELD_ID_LEN; int fieldOffLen = BinaryUtils.fieldOffsetLength(flags); int orderBase = start + schemaOff + fieldIdLen; int orderMultiplier = fieldIdLen + fieldOffLen; return new BinarySerializedFieldComparator(this, null, ptr, start, orderBase, orderMultiplier, fieldOffLen); }
byte typ = c1.fieldType(); if (typ != c2.fieldType()) return false; case GridBinaryMarshaller.BYTE: case GridBinaryMarshaller.BOOLEAN: return c1.readByte(1) == c2.readByte(1); return c1.readShort(1) == c2.readShort(1); return c1.readInt(1) == c2.readInt(1); return c1.readLong(1) == c2.readLong(1); return c1.readLong(1) == c2.readLong(1) && c1.readInt(1 + 8) == c2.readInt(1 + 8); return c1.readLong(1) == c2.readLong(1); return c1.readLong(1) == c2.readLong(1) && c1.readLong(1 + 8) == c2.readLong(1 + 8); return compareByteArrays(c1, c2, 1); return c1.readInt(1) == c2.readInt(1) && compareByteArrays(c1, c2, 5); Object val1 = c1.currentField(); Object val2 = c2.currentField(); return isArray(val1) ? compareArrays(val1, val2) : F.eq(val1, val2);
/** * Read byte value. * * @param off Offset. * @return Value. */ private byte readByte(int off) { if (offheap()) return BinaryPrimitives.readByte(ptr, curFieldPos + off); else return arr[curFieldPos + off]; }
/** * Compare single field. * * @param first First object. * @param second Second object. * @param expRes Expected result. */ private void compareSingle(BinaryObjectExImpl first, BinaryObjectExImpl second, boolean expRes) { BinarySerializedFieldComparator firstComp = first.createFieldComparator(); BinarySerializedFieldComparator secondComp = second.createFieldComparator(); // Compare expected result. firstComp.findField(singleFieldOrder(first)); secondComp.findField(singleFieldOrder(second)); assertEquals(expRes, BinarySerializedFieldComparator.equals(firstComp, secondComp)); }
byte typ = c1.fieldType(); if (typ != c2.fieldType()) return false; case GridBinaryMarshaller.BYTE: case GridBinaryMarshaller.BOOLEAN: return c1.readByte(1) == c2.readByte(1); return c1.readShort(1) == c2.readShort(1); return c1.readInt(1) == c2.readInt(1); return c1.readLong(1) == c2.readLong(1); return c1.readLong(1) == c2.readLong(1) && c1.readInt(1 + 8) == c2.readInt(1 + 8); return c1.readLong(1) == c2.readLong(1); return c1.readLong(1) == c2.readLong(1) && c1.readLong(1 + 8) == c2.readLong(1 + 8); return compareByteArrays(c1, c2, 1); return c1.readInt(1) == c2.readInt(1) && compareByteArrays(c1, c2, 5); Object val1 = c1.currentField(); Object val2 = c2.currentField(); return isArray(val1) ? compareArrays(val1, val2) : F.eq(val1, val2);
/** * Get field type. * * @return Field type. */ private byte fieldType() { if (curFieldPos == POS_NOT_FOUND) return GridBinaryMarshaller.NULL; else return offheap() ? BinaryPrimitives.readByte(ptr, curFieldPos) : BinaryPrimitives.readByte(arr, curFieldPos); }
/** {@inheritDoc} */ @Override public BinarySerializedFieldComparator createFieldComparator() { int schemaOff = BinaryPrimitives.readInt(arr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS); short flags = BinaryPrimitives.readShort(arr, start + GridBinaryMarshaller.FLAGS_POS); int fieldIdLen = BinaryUtils.isCompactFooter(flags) ? 0 : BinaryUtils.FIELD_ID_LEN; int fieldOffLen = BinaryUtils.fieldOffsetLength(flags); int orderBase = start + schemaOff + fieldIdLen; int orderMultiplier = fieldIdLen + fieldOffLen; return new BinarySerializedFieldComparator(this, arr, 0L, start, orderBase, orderMultiplier, fieldOffLen); }
/** * Read short value. * * @param off Offset. * @return Value. */ private short readShort(int off) { if (offheap()) return BinaryPrimitives.readShort(ptr, curFieldPos + off); else return BinaryPrimitives.readShort(arr, curFieldPos + off); }
/** {@inheritDoc} */ @Override public BinarySerializedFieldComparator createFieldComparator() { int schemaOff = BinaryPrimitives.readInt(arr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS); short flags = BinaryPrimitives.readShort(arr, start + GridBinaryMarshaller.FLAGS_POS); int fieldIdLen = BinaryUtils.isCompactFooter(flags) ? 0 : BinaryUtils.FIELD_ID_LEN; int fieldOffLen = BinaryUtils.fieldOffsetLength(flags); int orderBase = start + schemaOff + fieldIdLen; int orderMultiplier = fieldIdLen + fieldOffLen; return new BinarySerializedFieldComparator(this, arr, 0L, start, orderBase, orderMultiplier, fieldOffLen); }
/** * Read long value. * * @param off Offset. * @return Value. */ private long readLong(int off) { if (offheap()) return BinaryPrimitives.readLong(ptr, curFieldPos + off); else return BinaryPrimitives.readLong(arr, curFieldPos + off); }
/** {@inheritDoc} */ @Override public BinarySerializedFieldComparator createFieldComparator() { int schemaOff = BinaryPrimitives.readInt(ptr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS); short flags = BinaryPrimitives.readShort(ptr, start + GridBinaryMarshaller.FLAGS_POS); int fieldIdLen = BinaryUtils.isCompactFooter(flags) ? 0 : BinaryUtils.FIELD_ID_LEN; int fieldOffLen = BinaryUtils.fieldOffsetLength(flags); int orderBase = start + schemaOff + fieldIdLen; int orderMultiplier = fieldIdLen + fieldOffLen; return new BinarySerializedFieldComparator(this, null, ptr, start, orderBase, orderMultiplier, fieldOffLen); }
/** * Read int value. * * @param off Offset. * @return Value. */ private int readInt(int off) { if (offheap()) return BinaryPrimitives.readInt(ptr, curFieldPos + off); else return BinaryPrimitives.readInt(arr, curFieldPos + off); }
/** * Locate the field. * * @param order Field order. */ public void findField(int order) { curFieldOrder = order; if (order == BinarySchema.ORDER_NOT_FOUND) curFieldPos = POS_NOT_FOUND; else { int pos = orderBase + order * orderMultiplier; if (fieldOffLen == BinaryUtils.OFFSET_1) { byte val = offheap() ? BinaryPrimitives.readByte(ptr, pos) : BinaryPrimitives.readByte(arr, pos); curFieldPos = startOff + ((int)val & 0xFF); } else if (fieldOffLen == BinaryUtils.OFFSET_2) { short val = offheap() ? BinaryPrimitives.readShort(ptr, pos) : BinaryPrimitives.readShort(arr, pos); curFieldPos = startOff + ((int)val & 0xFFFF); } else { int val = offheap() ? BinaryPrimitives.readInt(ptr, pos) : BinaryPrimitives.readInt(arr, pos); curFieldPos = startOff + val; } } }
/** * Read byte value. * * @param off Offset. * @return Value. */ private byte readByte(int off) { if (offheap()) return BinaryPrimitives.readByte(ptr, curFieldPos + off); else return arr[curFieldPos + off]; }
/** * Get field type. * * @return Field type. */ private byte fieldType() { if (curFieldPos == POS_NOT_FOUND) return GridBinaryMarshaller.NULL; else return offheap() ? BinaryPrimitives.readByte(ptr, curFieldPos) : BinaryPrimitives.readByte(arr, curFieldPos); }
/** * Read long value. * * @param off Offset. * @return Value. */ private long readLong(int off) { if (offheap()) return BinaryPrimitives.readLong(ptr, curFieldPos + off); else return BinaryPrimitives.readLong(arr, curFieldPos + off); }
/** * Read short value. * * @param off Offset. * @return Value. */ private short readShort(int off) { if (offheap()) return BinaryPrimitives.readShort(ptr, curFieldPos + off); else return BinaryPrimitives.readShort(arr, curFieldPos + off); }
/** * Read int value. * * @param off Offset. * @return Value. */ private int readInt(int off) { if (offheap()) return BinaryPrimitives.readInt(ptr, curFieldPos + off); else return BinaryPrimitives.readInt(arr, curFieldPos + off); }