/** {@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; }
/** * Constructor. * * @param objImpl Binary object */ BinaryBuilderReader(BinaryObjectImpl objImpl) { ctx = objImpl.context(); arr = objImpl.array(); pos = objImpl.start(); reader = new BinaryReaderExImpl(ctx, BinaryHeapInputStream.create(arr, pos), ctx.configuration().getClassLoader(), false); objMap = new HashMap<>(); }
/** * @param obj Object. * @return Offheap address. */ private long copyOffheap(BinaryObjectImpl obj) { byte[] arr = obj.array(); long ptr = GridUnsafe.allocateMemory(arr.length); GridUnsafe.copyHeapOffheap(arr, GridUnsafe.BYTE_ARR_OFF, ptr, arr.length); return ptr; }
/** * @param po Binary object. */ public void doWriteBinaryObject(@Nullable BinaryObjectImpl po) { if (po == null) out.writeByte(GridBinaryMarshaller.NULL); else { byte[] poArr = po.array(); out.unsafeEnsure(1 + 4 + poArr.length + 4); out.unsafeWriteByte(GridBinaryMarshaller.BINARY_OBJ); out.unsafeWriteInt(poArr.length); out.writeByteArray(poArr); out.unsafeWriteInt(po.start()); } }
/** * @param obj Instance of the BinaryObjectImpl to offheap marshalling. * @param marsh Binary marshaller. * @return Instance of BinaryObjectOffheapImpl. */ private BinaryObjectOffheapImpl marshalOffHeap(BinaryObjectImpl obj, BinaryMarshaller marsh) { long ptr = copyOffheap(obj); return new BinaryObjectOffheapImpl(binaryContext(marsh), ptr, 0, obj.array().length); }
/** * */ @Test public void testReadResolve() throws Exception { BinaryMarshaller marsh = binaryMarshaller(Arrays.asList( new BinaryTypeConfiguration(MySingleton.class.getName()), new BinaryTypeConfiguration(SingletonMarker.class.getName()))); BinaryObjectImpl binaryObj = marshal(MySingleton.INSTANCE, marsh); assertTrue(binaryObj.array().length <= 1024); // Check that big string was not serialized. MySingleton singleton = binaryObj.deserialize(); assertSame(MySingleton.INSTANCE, singleton); }
byte[] a = b.array();
assertEquals(binObj00.array().length, binObj01.array().length); assertEquals(binObj00.array().length, binObj02.array().length); assertEquals(binObj10.array().length, binObj11.array().length); assertEquals(binObj10.array().length, binObj12.array().length); assertNotEquals(binObj10.array().length, binObj00.array().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; }
/** * Constructor. * * @param objImpl Binary object */ BinaryBuilderReader(BinaryObjectImpl objImpl) { ctx = objImpl.context(); arr = objImpl.array(); pos = objImpl.start(); reader = new BinaryReaderExImpl(ctx, BinaryHeapInputStream.create(arr, pos), ctx.configuration().getClassLoader(), false); objMap = new HashMap<>(); }
/** * @param po Binary object. */ public void doWriteBinaryObject(@Nullable BinaryObjectImpl po) { if (po == null) out.writeByte(GridBinaryMarshaller.NULL); else { byte[] poArr = po.array(); out.unsafeEnsure(1 + 4 + poArr.length + 4); out.unsafeWriteByte(GridBinaryMarshaller.BINARY_OBJ); out.unsafeWriteInt(poArr.length); out.writeByteArray(poArr); out.unsafeWriteInt(po.start()); } }