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.