int schemaOff = BinaryPrimitives.readInt(arr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS); short flags = BinaryPrimitives.readShort(arr, start + GridBinaryMarshaller.FLAGS_POS); fieldPos = start + ((int)BinaryPrimitives.readByte(arr, fieldOffsetPos) & 0xFF); else if (fieldOffLen == BinaryUtils.OFFSET_2) fieldPos = start + ((int)BinaryPrimitives.readShort(arr, fieldOffsetPos) & 0xFFFF); else fieldPos = start + BinaryPrimitives.readInt(arr, fieldOffsetPos); byte hdr = BinaryPrimitives.readByte(arr, fieldPos); val = BinaryPrimitives.readInt(arr, fieldPos + 1); val = BinaryPrimitives.readLong(arr, fieldPos + 1); val = BinaryPrimitives.readBoolean(arr, fieldPos + 1); val = BinaryPrimitives.readShort(arr, fieldPos + 1); val = BinaryPrimitives.readByte(arr, fieldPos + 1); val = BinaryPrimitives.readChar(arr, fieldPos + 1); val = BinaryPrimitives.readFloat(arr, fieldPos + 1); val = BinaryPrimitives.readDouble(arr, fieldPos + 1); int dataLen = BinaryPrimitives.readInt(arr, fieldPos + 1);
/** * @param arr Array. * @param off Offset. * @param val Value. */ public static void writeBoolean(byte[] arr, int off, boolean val) { writeByte(arr, off, val ? (byte)1 : (byte)0); }
/** * @param ctx Context. * @param arr Array. */ public BinaryEnumObjectImpl(BinaryContext ctx, byte[] arr) { assert ctx != null; assert arr != null; if (arr[0] == GridBinaryMarshaller.ENUM) valBytes = arr; else { assert arr[0] == GridBinaryMarshaller.BINARY_ENUM; valBytes = new byte[arr.length]; valBytes[0] = GridBinaryMarshaller.ENUM; U.arrayCopy(arr, 1, valBytes, 1, arr.length - 1); } this.ctx = ctx; int off = 1; this.typeId = BinaryPrimitives.readInt(arr, off); off += 4; if (this.typeId == GridBinaryMarshaller.UNREGISTERED_TYPE_ID) { assert arr[off] == GridBinaryMarshaller.STRING; int len = BinaryPrimitives.readInt(arr, ++off); off += 4; byte[] bytes = BinaryPrimitives.readByteArray(arr, off, len); off += len; this.clsName = new String(bytes, UTF_8); } this.ord = BinaryPrimitives.readInt(arr, off); }
/** {@inheritDoc} */ @Override public int footerStartOffset() { short flags = BinaryPrimitives.readShort(ptr, start + GridBinaryMarshaller.FLAGS_POS); if (!BinaryUtils.hasSchema(flags)) return start + length(); return start + BinaryPrimitives.readInt(ptr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS); }
/** * 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; } } }
/** {@inheritDoc} */ @Override public int dataStartOffset() { int typeId = BinaryPrimitives.readInt(ptr, start + GridBinaryMarshaller.TYPE_ID_POS); if (typeId == GridBinaryMarshaller.UNREGISTERED_TYPE_ID) { int len = BinaryPrimitives.readInt(ptr, start + GridBinaryMarshaller.DFLT_HDR_LEN + 1); return start + GridBinaryMarshaller.DFLT_HDR_LEN + len + 5; } else return start + GridBinaryMarshaller.DFLT_HDR_LEN; }
Object res = BinaryPrimitives.readShort(arr, pos); pos += 2; return res; throw new BinaryObjectException("Invalid flag value: " + flag); long time = BinaryPrimitives.readLong(arr, pos); throw new BinaryObjectException("Invalid flag value: " + flag); long time = BinaryPrimitives.readLong(arr, pos); int nano = BinaryPrimitives.readInt(arr, pos); throw new BinaryObjectException("Invalid flag value: " + flag); long time = BinaryPrimitives.readLong(arr, pos);
/** * @param pos Position in the source array. * @return Read byte value. */ @Override public byte readBytePositioned(int pos) { return BinaryPrimitives.readByte(arr, pos); }
/** {@inheritDoc} */ @Override public short readShortPositioned(int pos) { return BinaryPrimitives.readShort(arr, pos); }
/** * @param arr Array. * @param off Offset. * @return Value. */ public static double readDouble(byte[] arr, int off) { long val = readLong(arr, off); return Double.longBitsToDouble(val); }
int schemaOffset = BinaryPrimitives.readInt(arr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS); short flags = BinaryPrimitives.readShort(arr, start + GridBinaryMarshaller.FLAGS_POS); fieldPos = start + ((int)BinaryPrimitives.readByte(arr, fieldOffsetPos) & 0xFF); else if (fieldOffsetLen == BinaryUtils.OFFSET_2) fieldPos = start + ((int)BinaryPrimitives.readShort(arr, fieldOffsetPos) & 0xFFFF); else fieldPos = start + BinaryPrimitives.readInt(arr, fieldOffsetPos); byte hdr = BinaryPrimitives.readByte(arr, fieldPos); int dataLen = BinaryPrimitives.readInt(arr, fieldPos + 1); int dataLen = BinaryPrimitives.readInt(arr, fieldPos + 5); totalLen = BinaryPrimitives.readInt(arr, fieldPos + GridBinaryMarshaller.TOTAL_LEN_POS); totalLen = BinaryPrimitives.readInt(arr, fieldPos + 1);
/** * @param off Offset related to {@link #pos} * @return Read int value. */ public int readInt(int off) { return BinaryPrimitives.readInt(arr, pos + off); }
/** {@inheritDoc} */ @Override public int footerStartOffset() { short flags = BinaryPrimitives.readShort(arr, start + GridBinaryMarshaller.FLAGS_POS); if (!BinaryUtils.hasSchema(flags)) return start + length(); return start + BinaryPrimitives.readInt(arr, start + GridBinaryMarshaller.SCHEMA_OR_RAW_OFF_POS); }
Object res = BinaryPrimitives.readShort(arr, pos); pos += 2; return res; throw new BinaryObjectException("Invalid flag value: " + flag); long time = BinaryPrimitives.readLong(arr, pos); throw new BinaryObjectException("Invalid flag value: " + flag); long time = BinaryPrimitives.readLong(arr, pos); int nano = BinaryPrimitives.readInt(arr, pos); throw new BinaryObjectException("Invalid flag value: " + flag); long time = BinaryPrimitives.readLong(arr, pos);
/** * @param arr Array. * @param off Offset. * @return Value. */ public static boolean readBoolean(byte[] arr, int off) { return readByte(arr, off) == 1; }
/** * @param ctx Context. * @param arr Array. */ public BinaryEnumObjectImpl(BinaryContext ctx, byte[] arr) { assert ctx != null; assert arr != null; if (arr[0] == GridBinaryMarshaller.ENUM) valBytes = arr; else { assert arr[0] == GridBinaryMarshaller.BINARY_ENUM; valBytes = new byte[arr.length]; valBytes[0] = GridBinaryMarshaller.ENUM; U.arrayCopy(arr, 1, valBytes, 1, arr.length - 1); } this.ctx = ctx; int off = 1; this.typeId = BinaryPrimitives.readInt(arr, off); off += 4; if (this.typeId == GridBinaryMarshaller.UNREGISTERED_TYPE_ID) { assert arr[off] == GridBinaryMarshaller.STRING; int len = BinaryPrimitives.readInt(arr, ++off); off += 4; byte[] bytes = BinaryPrimitives.readByteArray(arr, off, len); off += len; this.clsName = new String(bytes, UTF_8); } this.ord = BinaryPrimitives.readInt(arr, off); }
/** * @param ptr Pointer. * @param off Offset. * @return Value. */ public static double readDouble(long ptr, int off) { long val = readLong(ptr, off); return Double.longBitsToDouble(val); } }