Implemented IgfsClientResponse readTo/writeFrom logic.

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6826e3d1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6826e3d1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6826e3d1

Branch: refs/heads/ignite-3553
Commit: 6826e3d1385e183db860d2d0fe4fdc35531f4b31
Parents: d41c6c2
Author: vozerov-gridgain <[email protected]>
Authored: Thu Jul 28 14:16:47 2016 +0300
Committer: vozerov-gridgain <[email protected]>
Committed: Thu Jul 28 14:16:47 2016 +0300

----------------------------------------------------------------------
 .../igfs/client/IgfsClientResponse.java         | 89 ++++++++++++++++++--
 1 file changed, 83 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6826e3d1/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientResponse.java
index 2fd500f..5c4edf1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientResponse.java
@@ -103,8 +103,7 @@ public class IgfsClientResponse implements Message {
 
     /** {@inheritDoc} */
     @Override public byte fieldsCount() {
-        return (byte)(typ == IgfsClientResponseType.NULL || typ == 
IgfsClientResponseType.MARSH_ERR ?
-            2 : 3);
+        return (byte)(typ == IgfsClientResponseType.NULL || typ == 
IgfsClientResponseType.MARSH_ERR ? 2 : 3);
     }
 
     /** {@inheritDoc} */
@@ -114,16 +113,94 @@ public class IgfsClientResponse implements Message {
 
     /** {@inheritDoc} */
     @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        // TODO
+        writer.setBuffer(buf);
 
-        return false;
+        if (!writer.isHeaderWritten()) {
+            if (!writer.writeHeader(directType(), fieldsCount()))
+                return false;
+
+            writer.onHeaderWritten();
+        }
+
+        switch (writer.state()) {
+            case 0:
+                if (!writer.writeLong("msgId", msgId))
+                    return false;
+
+                writer.incrementState();
+
+            case 1:
+                if (!writer.writeInt("typ", typ.ordinal()))
+                    return false;
+
+                writer.incrementState();
+
+            default: {
+                if (typ == IgfsClientResponseType.BOOL) {
+                    if (!writer.writeBoolean("res", (boolean)res))
+                        return false;
+                }
+                else if (typ == IgfsClientResponseType.OBJ || typ == 
IgfsClientResponseType.ERR) {
+                    if (!writer.writeByteArray("resBytes", resBytes))
+                        return false;
+                }
+
+                writer.incrementState();
+            }
+        }
+
+        return true;
     }
 
     /** {@inheritDoc} */
     @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        // TODO
+        reader.setBuffer(buf);
+
+        if (!reader.beforeMessageRead())
+            return false;
+
+        switch (reader.state()) {
+            case 0:
+                msgId = reader.readLong("msgId");
+
+                if (!reader.isLastRead())
+                    return false;
+
+                reader.incrementState();
+
+            case 1:
+                int typOrd;
+
+                typOrd = reader.readInt("typ");
+
+                if (!reader.isLastRead())
+                    return false;
+
+                typ = IgfsClientResponseType.fromOrdinal(typOrd);
+
+                reader.incrementState();
+
+            default: {
+                if (typ == IgfsClientResponseType.BOOL) {
+                    res = reader.readBoolean("res");
+
+                    if (!reader.isLastRead())
+                        return false;
+
+                    reader.incrementState();
+                }
+                else if (typ == IgfsClientResponseType.OBJ || typ == 
IgfsClientResponseType.ERR) {
+                    resBytes = reader.readByteArray("resBytes");
+
+                    if (!reader.isLastRead())
+                        return false;
+
+                    reader.incrementState();
+                }
+            }
+        }
 
-        return false;
+        return reader.afterMessageRead(IgfsClientResponse.class);
     }
 
     /** {@inheritDoc} */

Reply via email to