IGNITE-471 - Marshalling refactoring
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/5b00cdb8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/5b00cdb8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/5b00cdb8 Branch: refs/heads/ignite-471 Commit: 5b00cdb89cc71e81cbc674a1b6132ebed279ef17 Parents: bc4676a Author: Valentin Kulichenko <vkuliche...@gridgain.com> Authored: Mon Apr 6 16:30:25 2015 -0700 Committer: Valentin Kulichenko <vkuliche...@gridgain.com> Committed: Mon Apr 6 16:30:25 2015 -0700 ---------------------------------------------------------------------- .../internal/direct/DirectByteBufferStream.java | 13 ++++++++++--- .../processors/cache/GridCacheMapEntry.java | 1 - .../apache/ignite/internal/util/IgniteUtils.java | 19 +++++++++++++------ .../optimized/OptimizedMarshaller.java | 3 +-- 4 files changed, 24 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5b00cdb8/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java index efe57b5..64c895b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java @@ -535,10 +535,17 @@ public class DirectByteBufferStream { */ public void writeByteBuffer(ByteBuffer val) { if (val != null) { - // TODO: IGNITE-471 - Support offheap? - assert val.hasArray(); + if (val.hasArray()) + writeByteArray(val.array(), val.position(), val.remaining()); + else { + val = val.duplicate(); - writeByteArray(val.array(), val.position(), val.remaining()); + byte[] arr = new byte[val.remaining()]; + + val.get(arr); + + writeByteArray(arr); + } } else writeInt(-1); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5b00cdb8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java index 5933c83..18ccfe5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java @@ -537,7 +537,6 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx { /** * @return Value bytes and flag indicating whether value is byte array. */ - // TODO: IGNITE-471 - Switch to other class here??? protected IgniteBiTuple<ByteBuffer, Byte> valueBytes0() { assert Thread.holdsLock(this); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5b00cdb8/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index 63e55f0..e233f8b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -2035,11 +2035,20 @@ public abstract class IgniteUtils { if (buf == null) out.writeInt(-1); else { - // TODO: IGNITE-471 - Support offheap? - assert buf.hasArray(); + if (buf.hasArray()) { + out.writeInt(buf.remaining()); + out.write(buf.array(), buf.position(), buf.remaining()); + } + else { + buf = buf.duplicate(); + + byte[] arr = new byte[buf.remaining()]; - out.writeInt(buf.remaining()); - out.write(buf.array(), buf.position(), buf.remaining()); + buf.get(arr); + + out.writeInt(arr.length); + out.write(arr); + } } } @@ -9026,8 +9035,6 @@ public abstract class IgniteUtils { } /** - * // TODO: IGNITE-471 - Remove method? - * * @param buf Byte buffer. * @return Byte array. */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5b00cdb8/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java index 35cf1ae..31b2879 100644 --- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java +++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java @@ -225,7 +225,7 @@ public class OptimizedMarshaller extends AbstractMarshaller { @SuppressWarnings("unchecked") @Override public <T> T unmarshal(ByteBuffer buf, @Nullable ClassLoader clsLdr) throws IgniteCheckedException { assert buf != null; - assert buf.hasArray(); // TODO: IGNITE-471 - Support offheap? + assert buf.hasArray(); OptimizedObjectInputStream objIn = null; @@ -234,7 +234,6 @@ public class OptimizedMarshaller extends AbstractMarshaller { objIn.context(clsMap, ctx, mapper, clsLdr != null ? clsLdr : dfltClsLdr); - // TODO: IGNITE-471 - Position is not moved. objIn.in().bytes(buf.array(), buf.position(), buf.remaining()); return (T)objIn.readObject();