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();

Reply via email to