/** {@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); }
/** {@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); }
/** * Initialize read cache if needed. */ private void ensureReadCacheInit() { assert reader != null; if (readCache == null) { int fieldIdLen = BinaryUtils.fieldIdLength(flags); int fieldOffsetLen = BinaryUtils.fieldOffsetLength(flags); BinarySchema schema = reader.schema(); Map<Integer, Object> readCache = new HashMap<>(); IgniteBiTuple<Integer, Integer> footer = BinaryUtils.footerAbsolute(reader, start); int footerPos = footer.get1(); int footerEnd = footer.get2(); int rawPos = BinaryUtils.rawOffsetAbsolute(reader, start); int idx = 0; while (footerPos + fieldIdLen < footerEnd) { int fieldId = schema.fieldId(idx++); IgniteBiTuple<Integer, Integer> posAndLen = fieldPositionAndLength(footerPos, footerEnd, rawPos, fieldIdLen, fieldOffsetLen); Object val = reader.getValueQuickly(posAndLen.get1(), posAndLen.get2()); readCache.put(fieldId, val); // Shift current footer position. footerPos += fieldIdLen + fieldOffsetLen; } this.readCache = readCache; } }
int fieldOffsetLen = BinaryUtils.fieldOffsetLength(flags);
int fieldOffLen = BinaryUtils.fieldOffsetLength(flags);
int fieldOffLen = BinaryUtils.fieldOffsetLength(flags);
int fieldOffsetLen = BinaryUtils.fieldOffsetLength(flags);
fieldOffLen = BinaryUtils.fieldOffsetLength(flags);
/** {@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); }
/** {@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); }
/** * Initialize read cache if needed. */ private void ensureReadCacheInit() { assert reader != null; if (readCache == null) { int fieldIdLen = BinaryUtils.fieldIdLength(flags); int fieldOffsetLen = BinaryUtils.fieldOffsetLength(flags); BinarySchema schema = reader.schema(); Map<Integer, Object> readCache = new HashMap<>(); IgniteBiTuple<Integer, Integer> footer = BinaryUtils.footerAbsolute(reader, start); int footerPos = footer.get1(); int footerEnd = footer.get2(); int rawPos = BinaryUtils.rawOffsetAbsolute(reader, start); int idx = 0; while (footerPos + fieldIdLen < footerEnd) { int fieldId = schema.fieldId(idx++); IgniteBiTuple<Integer, Integer> posAndLen = fieldPositionAndLength(footerPos, footerEnd, rawPos, fieldIdLen, fieldOffsetLen); Object val = reader.getValueQuickly(posAndLen.get1(), posAndLen.get2()); readCache.put(fieldId, val); // Shift current footer position. footerPos += fieldIdLen + fieldOffsetLen; } this.readCache = readCache; } }
int fieldOffsetLen = BinaryUtils.fieldOffsetLength(flags);
int fieldOffLen = BinaryUtils.fieldOffsetLength(flags);
int fieldOffLen = BinaryUtils.fieldOffsetLength(flags);
int fieldOffsetLen = BinaryUtils.fieldOffsetLength(flags);
fieldOffLen = BinaryUtils.fieldOffsetLength(flags);