You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/10/10 12:13:24 UTC

[28/50] [abbrv] ignite git commit: io test

io test


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

Branch: refs/heads/ignite-gg-8-io2-selNow
Commit: c9b7965a71be9071ab24948ba994a1ba62f3f330
Parents: cb7d7cf
Author: sboikov <sb...@gridgain.com>
Authored: Fri Sep 30 13:22:46 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri Sep 30 13:22:46 2016 +0300

----------------------------------------------------------------------
 .../communication/IgniteIoTestMessage.java      | 102 ++++---------------
 .../ignite/internal/util/nio/GridNioServer.java |  22 +++-
 2 files changed, 41 insertions(+), 83 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c9b7965a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessage.java
index 6678aee..d8cb600 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessage.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.managers.communication;
 
+import org.apache.ignite.internal.GridDirectTransient;
+import org.apache.ignite.internal.util.GridUnsafe;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.extensions.communication.Message;
 import org.apache.ignite.plugin.extensions.communication.MessageReader;
@@ -35,17 +37,23 @@ public class IgniteIoTestMessage implements Message {
     private static final long serialVersionUID = 0L;
 
     /** */
+    @GridDirectTransient
     private long id;
 
     /** */
+    @GridDirectTransient
     private byte flags;
 
     /** */
+    @GridDirectTransient
     private boolean req;
 
     /** */
+    @GridDirectTransient
     private byte payload[];
 
+    private byte[] data;
+
     /**
      *
      */
@@ -62,20 +70,26 @@ public class IgniteIoTestMessage implements Message {
         this.id = id;
         this.req = req;
         this.payload = payload;
+
+        data = new byte[10];
+
+        GridUnsafe.putByte(data, 0, (byte)0);
+        GridUnsafe.putBoolean(data, 1, req);
+        GridUnsafe.putLong(data, 2, id);
     }
 
     /**
      * @return Process from NIO thread flag.
      */
     public boolean processFromNioThread() {
-        return isFlag(FLAG_PROC_FROM_NIO);
+        return false;//isFlag(FLAG_PROC_FROM_NIO);
     }
 
     /**
      * @param procFromNioThread Process from NIO thread flag.
      */
     public void processFromNioThread(boolean procFromNioThread) {
-        setFlag(procFromNioThread, FLAG_PROC_FROM_NIO);
+        //setFlag(procFromNioThread, FLAG_PROC_FROM_NIO);
     }
 
     /**
@@ -116,100 +130,26 @@ public class IgniteIoTestMessage implements Message {
      * @return {@code True} for request.
      */
     public boolean request() {
-        return req;
+        return GridUnsafe.getBoolean(data, 1);
+        //return req;
     }
 
     /**
      * @return ID.
      */
     public long id() {
-        return id;
+        return GridUnsafe.getLong(data, 2);
+        //return id;
     }
 
     /** {@inheritDoc} */
     @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType(), fieldsCount()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeByte("flags", flags))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeLong("id", id))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeByteArray("payload", payload))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeBoolean("req", req))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
         return true;
     }
 
     /** {@inheritDoc} */
     @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        if (!reader.beforeMessageRead())
-            return false;
-
-        switch (reader.state()) {
-            case 0:
-                flags = reader.readByte("flags");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                id = reader.readLong("id");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                payload = reader.readByteArray("payload");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                req = reader.readBoolean("req");
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return reader.afterMessageRead(IgniteIoTestMessage.class);
+        return true;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/c9b7965a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index ce1f59c..1c4599c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -844,7 +844,16 @@ public class GridNioServer<T> {
                     req = (NioOperationFuture<?>)ses.pollFuture();
 
                     if (req == null) {
-                        key.interestOps(key.interestOps() & (~SelectionKey.OP_WRITE));
+                        if (ses.procWrite.get()) {
+                            boolean set = ses.procWrite.compareAndSet(true, false);
+
+                            assert set;
+
+                            if (ses.writeQueue().isEmpty())
+                                key.interestOps(key.interestOps() & (~SelectionKey.OP_WRITE));
+                            else
+                                ses.procWrite.set(true);
+                        }
 
                         break;
                     }
@@ -1043,7 +1052,16 @@ public class GridNioServer<T> {
                         req = (NioOperationFuture<?>)ses.pollFuture();
 
                         if (req == null && buf.position() == 0) {
-                            key.interestOps(key.interestOps() & (~SelectionKey.OP_WRITE));
+                            if (ses.procWrite.get()) {
+                                boolean set = ses.procWrite.compareAndSet(true, false);
+
+                                assert set;
+
+                                if (ses.writeQueue().isEmpty())
+                                    key.interestOps(key.interestOps() & (~SelectionKey.OP_WRITE));
+                                else
+                                    ses.procWrite.set(true);
+                            }
 
                             break;
                         }