You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/01/28 15:31:38 UTC
svn commit: r1655351 -
/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
Author: markt
Date: Wed Jan 28 14:31:38 2015
New Revision: 1655351
URL: http://svn.apache.org/r1655351
Log:
Adding a socket to the Poller with OP_CALLBACK resulted in a call to
processSocket() with exactly the same paramters as if processSocket()
was called directly. Therefore, call processSocket() directly and avoid
the overhead of going via the Poller.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=1655351&r1=1655350&r2=1655351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Wed Jan 28 14:31:38 2015
@@ -80,7 +80,6 @@ public class NioEndpoint extends Abstrac
public static final int OP_REGISTER = 0x100; //register interest op
- public static final int OP_CALLBACK = 0x200; //callback interest op
// ----------------------------------------------------------------- Fields
@@ -578,12 +577,7 @@ public class NioEndpoint extends Abstrac
@Override
public void processSocket(SocketWrapperBase<NioChannel> socketWrapper,
SocketStatus socketStatus, boolean dispatch) {
- NioChannel socket = socketWrapper.getSocket();
- if (socket.isOpen() && dispatch && socketStatus == SocketStatus.OPEN_READ) {
- socket.getPoller().add(socket, OP_CALLBACK);
- } else {
- processSocket((NioSocketWrapper) socketWrapper, socketStatus, dispatch);
- }
+ processSocket((NioSocketWrapper) socketWrapper, socketStatus, dispatch);
}
protected boolean processSocket(NioSocketWrapper attachment, SocketStatus status, boolean dispatch) {
@@ -591,7 +585,6 @@ public class NioEndpoint extends Abstrac
if (attachment == null) {
return false;
}
- attachment.setCallBackNotify(false); //will get reset upon next reg
SocketProcessor sc = processorCache.pop();
if ( sc == null ) sc = new SocketProcessor(attachment, status);
else sc.reset(attachment, status);
@@ -773,19 +766,11 @@ public class NioEndpoint extends Abstrac
if (key != null) {
final NioSocketWrapper att = (NioSocketWrapper) key.attachment();
if ( att!=null ) {
- //handle callback flag
- if ((interestOps & OP_CALLBACK) == OP_CALLBACK ) {
- att.setCallBackNotify(true);
- } else {
- att.setCallBackNotify(false);
- }
- interestOps = (interestOps & (~OP_CALLBACK));//remove the callback flag
att.access();//to prevent timeout
//we are registering the key to start with, reset the fairness counter.
int ops = key.interestOps() | interestOps;
att.interestOps(ops);
- if (att.getCallBackNotify()) key.interestOps(0);
- else key.interestOps(ops);
+ key.interestOps(ops);
} else {
cancel = true;
}
@@ -863,9 +848,6 @@ public class NioEndpoint extends Abstrac
PollerEvent r = eventCache.pop();
if ( r==null) r = new PollerEvent(socket,null,interestOps);
else r.reset(socket,null,interestOps);
- if ( (interestOps&OP_CALLBACK) == OP_CALLBACK ) {
- nextExpiration = 0; //force the check for faster callback
- }
addEvent(r);
if (close) {
NioEndpoint.NioSocketWrapper ka = (NioEndpoint.NioSocketWrapper)socket.getAttachment();
@@ -1251,12 +1233,6 @@ public class NioEndpoint extends Abstrac
cancelledKey(key); //we don't support any keys without attachments
} else if ( ka.getError() != null) {
cancelledKey(key);//TODO this is not yet being used
- } else if (ka.getCallBackNotify() ) {
- ka.setCallBackNotify(false);
- int ops = ka.interestOps() & ~OP_CALLBACK;
- reg(key,ka,0);//avoid multiple calls, this gets re-registered after invocation
- ka.interestOps(ops);
- if (!processSocket(ka, SocketStatus.OPEN_READ, true)) processSocket(ka, SocketStatus.DISCONNECT, true);
} else if ((ka.interestOps()&SelectionKey.OP_READ) == SelectionKey.OP_READ ||
(ka.interestOps()&SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE) {
//only timeout sockets that we are waiting for a read from
@@ -1309,7 +1285,6 @@ public class NioEndpoint extends Abstrac
private Poller poller = null;
private int interestOps = 0;
- private boolean callBackNotify = false;
private CountDownLatch readLatch = null;
private CountDownLatch writeLatch = null;
private volatile SendfileData sendfileData = null;
@@ -1323,7 +1298,6 @@ public class NioEndpoint extends Abstrac
public void reset(Poller poller, NioChannel channel, long soTimeout) {
super.reset(channel, soTimeout);
- callBackNotify = false;
interestOps = 0;
this.poller = poller;
sendfileData = null;
@@ -1366,8 +1340,6 @@ public class NioEndpoint extends Abstrac
public Poller getPoller() { return poller;}
public void setPoller(Poller poller){this.poller = poller;}
- public void setCallBackNotify(boolean notify) { this.callBackNotify = notify; }
- public boolean getCallBackNotify() { return callBackNotify; }
public int interestOps() { return interestOps;}
public int interestOps(int ops) { this.interestOps = ops; return ops; }
public CountDownLatch getReadLatch() { return readLatch; }
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org