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;
}