You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2006/06/23 00:02:23 UTC

svn commit: r416481 - /tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java

Author: fhanik
Date: Thu Jun 22 15:02:23 2006
New Revision: 416481

URL: http://svn.apache.org/viewvc?rev=416481&view=rev
Log:
Dont do the not needed operations, if they are not needed.
Performance is just a tad under java.io, which is expected as we need to poll, as opposed to constantly wait for data.

Modified:
    tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java

Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=416481&r1=416480&r2=416481&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Thu Jun 22 15:02:23 2006
@@ -567,10 +567,14 @@
                 try {
                     final SelectionKey key = socket.keyFor(poller.getSelector());
                     final KeyAttachment att = (KeyAttachment)key.attachment();
-                    att.setWakeUp(true);
-                    
-                    poller.addEvent(
-                        new Runnable() {
+                    //to do, add in a check, we might have just timed out on the wait,
+                    //so there is no need to register us again.
+                    boolean addToQueue = false;
+                    try { addToQueue = ((key.interestOps()&SelectionKey.OP_READ) != SelectionKey.OP_READ); } catch ( CancelledKeyException ignore ){}
+                    if ( addToQueue ) {
+                        att.setWakeUp(true);
+                        poller.addEvent(
+                            new Runnable() {
                             public void run() {
                                 try {
                                     if (key != null) key.interestOps(SelectionKey.OP_READ);
@@ -582,12 +586,16 @@
                                     } catch (Exception ignore) {}
                                 }
                             }
-                    });
-                    synchronized (att.getMutex()) { att.getMutex().wait(25);}
+                        });
+                    }//end if
+                    synchronized (att.getMutex()) {
+                        if ( att.getWakeUp() ) att.getMutex().wait(25);
+                    }
                 }catch ( Exception x ) {}
         }while ( nRead == 0 && (!timedOut) );
         //else throw new IOException(sm.getString("iib.failedread"));
-        return false; //timeout
+        //return false; //timeout
+        throw new IOException("read timed out.");
     }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org