/** * @return Detached or not. */ public boolean detached() { return start == 0 && length() == arr.length; }
/** {@inheritDoc} */ @Override public void writeExternal(ObjectOutput out) throws IOException { if (detachAllowed) { int len = length(); out.writeInt(len); out.write(arr, start, len); out.writeInt(0); } else { out.writeInt(arr.length); out.write(arr); out.writeInt(start); } }
/** {@inheritDoc} */ @Override public int valueBytesLength(CacheObjectContext ctx) throws IgniteCheckedException { return CacheObjectAdapter.objectPutSize(length()); }
/** {@inheritDoc} */ @Override public boolean putValue(ByteBuffer buf) throws IgniteCheckedException { return putValue(buf, 0, CacheObjectAdapter.objectPutSize(length())); }
/** {@inheritDoc} */ @Override public byte[] valueBytes(CacheObjectValueContext ctx) throws IgniteCheckedException { if (detached()) return array(); int len = length(); byte[] arr0 = new byte[len]; U.arrayCopy(arr, start, arr0, 0, len); return arr0; }
/** * @return Detached binary object. */ public BinaryObjectImpl detach() { if (!detachAllowed || detached()) return this; int len = length(); byte[] arr0 = new byte[len]; U.arrayCopy(arr, start, arr0, 0, len); return new BinaryObjectImpl(ctx, arr0, 0); }
/** {@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); }
/** {@inheritDoc} */ @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { writer.setBuffer(buf); if (!writer.isHeaderWritten()) { if (!writer.writeHeader(directType(), fieldsCount())) return false; writer.onHeaderWritten(); } switch (writer.state()) { case 0: if (!writer.writeByteArray("arr", arr, detachAllowed ? start : 0, detachAllowed ? length() : arr.length)) return false; writer.incrementState(); case 1: if (!writer.writeInt("part", part)) return false; writer.incrementState(); case 2: if (!writer.writeInt("start", detachAllowed ? 0 : start)) return false; writer.incrementState(); } return true; }
BinaryObjectImpl binObjRawOther1 = marshal(objectRawOther, m1); assertEquals(binObjOther0.length(), binObj0.length()); assertEquals(binObjOther1.length(), binObj1.length()); assertEquals(binObjWithRawOther0.length(), binObjWithRaw0.length()); assertEquals(binObjWithRawOther1.length(), binObjWithRaw1.length()); assertEquals(binObjRawOther0.length(), binObjRaw0.length()); assertEquals(binObjRawOther1.length(), binObjRaw1.length());
/** * @return Detached or not. */ public boolean detached() { return start == 0 && length() == arr.length; }
/** {@inheritDoc} */ @Override public void writeExternal(ObjectOutput out) throws IOException { if (detachAllowed) { int len = length(); out.writeInt(len); out.write(arr, start, len); out.writeInt(0); } else { out.writeInt(arr.length); out.write(arr); out.writeInt(start); } }
/** {@inheritDoc} */ @Override public int valueBytesLength(CacheObjectContext ctx) throws IgniteCheckedException { return CacheObjectAdapter.objectPutSize(length()); }
/** {@inheritDoc} */ @Override public boolean putValue(ByteBuffer buf) throws IgniteCheckedException { return putValue(buf, 0, CacheObjectAdapter.objectPutSize(length())); }
/** * @return Detached binary object. */ public BinaryObjectImpl detach() { if (!detachAllowed || detached()) return this; int len = length(); byte[] arr0 = new byte[len]; U.arrayCopy(arr, start, arr0, 0, len); return new BinaryObjectImpl(ctx, arr0, 0); }
/** {@inheritDoc} */ @Override public byte[] valueBytes(CacheObjectValueContext ctx) throws IgniteCheckedException { if (detached()) return array(); int len = length(); byte[] arr0 = new byte[len]; U.arrayCopy(arr, start, arr0, 0, len); return arr0; }
/** {@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); }
/** {@inheritDoc} */ @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { writer.setBuffer(buf); if (!writer.isHeaderWritten()) { if (!writer.writeHeader(directType(), fieldsCount())) return false; writer.onHeaderWritten(); } switch (writer.state()) { case 0: if (!writer.writeByteArray("arr", arr, detachAllowed ? start : 0, detachAllowed ? length() : arr.length)) return false; writer.incrementState(); case 1: if (!writer.writeInt("part", part)) return false; writer.incrementState(); case 2: if (!writer.writeInt("start", detachAllowed ? 0 : start)) return false; writer.incrementState(); } return true; }