Author: jvermillard
Date: Thu Jul 26 01:01:42 2007
New Revision: 559739

URL: http://svn.apache.org/viewvc?view=rev&rev=559739
Log:
trying to make polling less cpu intensive

Modified:
    
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRIoProcessor.java
    
mina/sandbox/jvermillard/apr/src/test/java/org/apache/mina/transport/apr/TestCnx.java

Modified: 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRIoProcessor.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRIoProcessor.java?view=diff&rev=559739&r1=559738&r2=559739
==============================================================================
--- 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRIoProcessor.java
 (original)
+++ 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRIoProcessor.java
 Thu Jul 26 01:01:42 2007
@@ -61,7 +61,7 @@
                try {
 
                        // TODO : optimize/parametrize those values
-                       pollset = Poll.create(32, pool, 0, 10000000);
+                       pollset = Poll.create(32, pool, 
Poll.APR_POLLSET_THREADSAFE, 10000000);
                } catch (Error e) {
                        logger.error("APR Error : " + e.getDescription(), e);
                        // TODO : send that to the good logger
@@ -89,22 +89,34 @@
        }
 
        void flush(APRSessionImpl session) {
-               scheduleFlush(session);
+               //scheduleFlush(session);
+
+               // add the descriptor as POLLOUT
+               
+               int rv = Poll.add(pollset, session.getAPRSocket(), 
Poll.APR_POLLIN
+               | Poll.APR_POLLOUT);
+               if (rv == Status.APR_SUCCESS) {
+                       System.err.println("pollout Ok");
+               } else {
+                       System.err.println("");
+               }
+
        }
 
        private void scheduleRemove(APRSessionImpl session) {
                removingSessions.offer(session);
        }
 
+//     private void scheduleFlush(APRSessionImpl session) {
+//             flushingSessions.offer(session);
+//     }
+
+       
        // TODO : do something with traffic control 
        private void scheduleTrafficControl(APRSessionImpl session) {
                trafficControllingSessions.offer(session);
        }
 
-       private void scheduleFlush(APRSessionImpl session) {
-               flushingSessions.offer(session);
-       }
-
        private void doAddNew() {
                for (;;) {
                        APRSessionImpl session = newSessions.poll();
@@ -118,7 +130,7 @@
                        System.err.println("pollset : "+pollset);
                        System.err.println("Socket : "+session.getAPRSocket());
                        int rv = Poll.add(pollset, session.getAPRSocket(), 
Poll.APR_POLLIN
-                                       | Poll.APR_POLLOUT);
+                                       /*| Poll.APR_POLLOUT*/);
                        if (rv == Status.APR_SUCCESS) {
                                System.out.println("Added worker to pollset");
                                managedSessions.put(session.getAPRSocket(), 
session);

Modified: 
mina/sandbox/jvermillard/apr/src/test/java/org/apache/mina/transport/apr/TestCnx.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/apr/src/test/java/org/apache/mina/transport/apr/TestCnx.java?view=diff&rev=559739&r1=559738&r2=559739
==============================================================================
--- 
mina/sandbox/jvermillard/apr/src/test/java/org/apache/mina/transport/apr/TestCnx.java
 (original)
+++ 
mina/sandbox/jvermillard/apr/src/test/java/org/apache/mina/transport/apr/TestCnx.java
 Thu Jul 26 01:01:42 2007
@@ -1,6 +1,8 @@
 package org.apache.mina.transport.apr;
 
 import java.net.InetSocketAddress;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
 
 import junit.framework.TestCase;
 
@@ -28,6 +30,9 @@
 
                        public void messageReceived(IoSession session, Object 
message) throws Exception {
                                System.err.println("Rcvd : "+message);
+                               if(message instanceof ByteBuffer) {
+                                       System.err.println("TXT : 
"+((ByteBuffer)message).getString(Charset.defaultCharset().newDecoder()));
+                               }
                                
                        }
 
@@ -58,8 +63,9 @@
                f.awaitUninterruptibly();
                
                assertTrue(f.getSession().isConnected());
-               //System.err.println("writing hello");
-               //f.getSession().write(  ByteBuffer.wrap("HELLO\n".getBytes()) 
);
+               Thread.sleep(1000);
+               System.err.println("writing hello");
+               f.getSession().write(  
ByteBuffer.wrap("HELLO\n".getBytes()).rewind() );
                
                Thread.sleep(4000);
                System.err.println("Done");


Reply via email to