GG-9900 - Portable marshaller 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/db9ed055
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/db9ed055
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/db9ed055

Branch: refs/heads/ignite-471
Commit: db9ed055107b98ff5aabf38904848ecc6721a7c1
Parents: 15b4ebb
Author: Valentin Kulichenko <vkuliche...@gridgain.com>
Authored: Wed Mar 11 18:39:47 2015 -0700
Committer: Valentin Kulichenko <vkuliche...@gridgain.com>
Committed: Wed Mar 11 18:39:47 2015 -0700

----------------------------------------------------------------------
 .../internal/direct/DirectByteBufferStream.java | 23 ++++++++++++++++++++
 .../internal/direct/DirectMessageReader.java    |  9 ++++++++
 .../internal/direct/DirectMessageWriter.java    |  7 ++++++
 .../MessageCollectionItemType.java              |  3 +++
 .../extensions/communication/MessageReader.java |  8 +++++++
 .../extensions/communication/MessageWriter.java |  9 ++++++++
 6 files changed, 59 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/db9ed055/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 528de10..f79efb3 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
@@ -531,6 +531,20 @@ public class DirectByteBufferStream {
     }
 
     /**
+     * @param val Value.
+     */
+    public void writeByteBuffer(ByteBuffer val) {
+        if (val != null) {
+            // TODO: IGNITE-471 - Support offheap?
+            assert val.hasArray();
+
+            writeByteArray(val.array(), val.position(), val.remaining());
+        }
+        else
+            writeInt(-1);
+    }
+
+    /**
      * @param val Value
      */
     public void writeString(String val) {
@@ -895,6 +909,15 @@ public class DirectByteBufferStream {
     /**
      * @return Value.
      */
+    public ByteBuffer readByteBuffer() {
+        byte[] arr = readByteArray();
+
+        return arr != null ? ByteBuffer.wrap(arr) : null;
+    }
+
+    /**
+     * @return Value.
+     */
     public String readString() {
         byte[] arr = readByteArray();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/db9ed055/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
index 669ace1..74f9c6c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
@@ -200,6 +200,15 @@ public class DirectMessageReader implements MessageReader {
     }
 
     /** {@inheritDoc} */
+    @Override public ByteBuffer readByteBuffer(String name) {
+        ByteBuffer val = stream.readByteBuffer();
+
+        lastRead = stream.lastFinished();
+
+        return val;
+    }
+
+    /** {@inheritDoc} */
     @Override public String readString(String name) {
         String val = stream.readString();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/db9ed055/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
index 593f34f..1ab5f76 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
@@ -166,6 +166,13 @@ public class DirectMessageWriter implements MessageWriter {
     }
 
     /** {@inheritDoc} */
+    @Override public boolean writeByteBuffer(String name, ByteBuffer val) {
+        stream.writeByteBuffer(val);
+
+        return stream.lastFinished();
+    }
+
+    /** {@inheritDoc} */
     @Override public boolean writeString(String name, String val) {
         stream.writeString(val);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/db9ed055/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
 
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
index ecb79cb..3b77ffb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
@@ -71,6 +71,9 @@ public enum MessageCollectionItemType {
     /** Boolean array. */
     BOOLEAN_ARR,
 
+    /** Byte buffer. */
+    BYTE_BUF,
+
     /** String. */
     STRING,
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/db9ed055/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
 
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
index 833e851..802ff7f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
@@ -166,6 +166,14 @@ public interface MessageReader {
     public boolean[] readBooleanArray(String name);
 
     /**
+     * Reads {@link ByteBuffer}.
+     *
+     * @param name Field name.
+     * @return {@link ByteBuffer}.
+     */
+    public ByteBuffer readByteBuffer(String name);
+
+    /**
      * Reads {@link String}.
      *
      * @param name Field name.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/db9ed055/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
 
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
index 777f2e6..7d3c6e8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
@@ -199,6 +199,15 @@ public interface MessageWriter {
     public boolean writeBooleanArray(String name, boolean[] val);
 
     /**
+     * Writes {@link ByteBuffer}.
+     *
+     * @param name Field name.
+     * @param val {@link ByteBuffer}.
+     * @return Whether value was fully written.
+     */
+    public boolean writeByteBuffer(String name, ByteBuffer val);
+
+    /**
      * Writes {@link String}.
      *
      * @param name Field name.

Reply via email to