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} */
