Author: jvermillard
Date: Tue Jul 31 09:02:41 2007
New Revision: 561368

URL: http://svn.apache.org/viewvc?view=rev&rev=561368
Log:
more APR to come

Modified:
    
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRConnector.java
    
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRIoProcessor.java
    
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionConfig.java
    
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionImpl.java
    
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/DefaultAPRSessionConfig.java

Modified: 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRConnector.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRConnector.java?view=diff&rev=561368&r1=561367&r2=561368
==============================================================================
--- 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRConnector.java
 (original)
+++ 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRConnector.java
 Tue Jul 31 09:02:41 2007
@@ -86,13 +86,11 @@
                        inetAddr = Address.info(sockAddr.getHostName(), 
Socket.APR_INET,
                                        sockAddr.getPort(), 0, pool);
 
-                       // FIXME : type of socket need to be configurable
-
+                       // TODO : type of socket need to be configurable
                        long clientSock = Socket.create(Socket.APR_INET,
                                        Socket.SOCK_STREAM, 
Socket.APR_PROTO_TCP, pool);
-                       System.err.println("Socket.create(..) : "+clientSock);
                        
-                       // TODO: error checking ???
+                       // FIXME : error checking
                        int ret = Socket.connect(clientSock, inetAddr);
                        System.err.println("Socket.connect : " + ret);
                        if (localAddress != null) {
@@ -143,4 +141,9 @@
                return ioProcessors[processorDistributor % processorCount];
        }
 
+       @Override
+       protected void finalize() throws Throwable {
+//              TODO : necessary I think, need to check APR doc
+               Pool.clear(pool);
+       }
 }

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=561368&r1=561367&r2=561368
==============================================================================
--- 
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
 Tue Jul 31 09:02:41 2007
@@ -59,7 +59,7 @@
                try {
 
                        // TODO : optimize/parametrize those values
-                       pollset = Poll.create(32, pool, /* obviously doesn't 
work..*/ Poll.APR_POLLSET_THREADSAFE, 10000000);   
+                       pollset = Poll.create(32, pool, 
Poll.APR_POLLSET_THREADSAFE /* enable poll thread safeness */, 10000000);       
                        
                } catch (Error e) {
                        logger.error("APR Error : " + e.getDescription(), e);
@@ -109,8 +109,7 @@
                                break;
                        }
 
-                       // polling the socket for write and read
-                       // FIXME : perhaps we should oll write only if needed 
for save CPU, but actually it's too complex for me :)
+                       // polling the socket for read
                        System.err.println("pollset : "+pollset);
                        System.err.println("Socket : "+session.getAPRSocket());
                        int rv;
@@ -125,7 +124,7 @@
                        } else {
                                // FIXME: find a way to bring the real APR 
error from returned codes
                                
session.getFilterChain().fireExceptionCaught(session,
-                                               new RuntimeException("APR 
Error"));
+                                               new RuntimeException("APR Error 
: "+Error.strerror(rv)));
                        }       
                }
        }
@@ -329,7 +328,6 @@
                                        if (rv > 0) {
                                                for (int n = 0; n < rv; n++) {
                                                        long clientSock = 
desc[n * 2 + 1];
-                                                       //logger.debug("Poll 
flags " + desc[n * 2]);
 
                                                        APRSessionImpl session 
= managedSessions
                                                                        
.get(clientSock);
@@ -359,5 +357,11 @@
                                }
                        }
                }
+       }
+       
+       @Override
+       protected void finalize() throws Throwable {
+               // TODO : necessary I think, need to check APR doc
+               Pool.clear(pool);
        }
 }

Modified: 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionConfig.java?view=diff&rev=561368&r1=561367&r2=561368
==============================================================================
--- 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionConfig.java
 (original)
+++ 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionConfig.java
 Tue Jul 31 09:02:41 2007
@@ -1,7 +1,99 @@
 package org.apache.mina.transport.apr;
 
+import java.net.Socket;
+
 import org.apache.mina.common.IoSessionConfig;
 
 public interface APRSessionConfig extends IoSessionConfig {
+       
+    /**
+     * @see Socket#getReuseAddress()
+     */
+    boolean isReuseAddress();
+
+    /**
+     * @see Socket#setReuseAddress(boolean)
+     */
+    void setReuseAddress(boolean reuseAddress);
+
+    /**
+     * @see Socket#getReceiveBufferSize()
+     */
+    int getReceiveBufferSize();
+
+    /**
+     * @see Socket#setReceiveBufferSize(int)
+     */
+    void setReceiveBufferSize(int receiveBufferSize);
+
+    /**
+     * @see Socket#getSendBufferSize()
+     */
+    int getSendBufferSize();
+
+    /**
+     * @see Socket#setSendBufferSize(int)
+     */
+    void setSendBufferSize(int sendBufferSize);
+
+    /**
+     * @see Socket#getTrafficClass()
+     */
+    int getTrafficClass();
+
+    /**
+     * @see Socket#setTrafficClass(int)
+     */
+    void setTrafficClass(int trafficClass);
+
+    /**
+     * @see Socket#getKeepAlive()
+     */
+    boolean isKeepAlive();
+
+    /**
+     * @see Socket#setKeepAlive(boolean)
+     */
+    void setKeepAlive(boolean keepAlive);
+
+    /**
+     * @see Socket#getOOBInline()
+     */
+    boolean isOobInline();
+
+    /**
+     * @see Socket#setOOBInline(boolean)
+     */
+    void setOobInline(boolean oobInline);
+
+    /**
+     * Please note that enabling <tt>SO_LINGER</tt> in Java NIO can result
+     * in platform-dependent behavior and unexpected blocking of I/O thread.
+     * 
+     * @see Socket#getSoLinger()
+     * @see <a 
href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6179351";>Sun Bug 
Database</a>
+     */
+    int getSoLinger();
+
+    /**
+     * Please note that enabling <tt>SO_LINGER</tt> in Java NIO can result
+     * in platform-dependent behavior and unexpected blocking of I/O thread.
+     * 
+     * @param soLinger Please specify a negative value to disable 
<tt>SO_LINGER</tt>.
+     * 
+     * @see Socket#setSoLinger(boolean, int)
+     * @see <a 
href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6179351";>Sun Bug 
Database</a>
+     */
+    void setSoLinger(int soLinger);
+
+    /**
+     * @see Socket#getTcpNoDelay()
+     */
+    boolean isTcpNoDelay();
+
+    /**
+     * @see Socket#setTcpNoDelay(boolean)
+     */
+    void setTcpNoDelay(boolean tcpNoDelay);
 
 }

Modified: 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionImpl.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionImpl.java?view=diff&rev=561368&r1=561367&r2=561368
==============================================================================
--- 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionImpl.java
 (original)
+++ 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/APRSessionImpl.java
 Tue Jul 31 09:02:41 2007
@@ -1,7 +1,6 @@
 package org.apache.mina.transport.apr;
 
 import java.net.InetSocketAddress;
-import java.net.SocketAddress;
 import java.util.LinkedList;
 import java.util.Queue;
 
@@ -12,14 +11,13 @@
 import org.apache.mina.common.TransportType;
 import org.apache.mina.common.WriteRequest;
 import org.apache.mina.common.support.BaseIoSession;
-import org.apache.mina.common.support.BaseIoSessionConfig;
 
 public class APRSessionImpl extends BaseIoSession implements APRSession {
        private long socket;
 
        private final IoService service;
 
-       private final APRSessionConfig config = new APRSessionConfigImpl();
+       private final APRSessionConfig config = new DefaultAPRSessionConfig();
 
        private final APRIoProcessor ioProcessor;
 
@@ -31,8 +29,6 @@
 
        private byte[] readBuffer=new byte[1024]; //FIXME : fixed rcvd buffer, 
need to change that to a config value
 
-       private int readBufferSize;
-
        private final InetSocketAddress remoteAddress;
 
        private final InetSocketAddress localAddress;
@@ -124,14 +120,5 @@
        @Override
        public InetSocketAddress getServiceAddress() {
                return (InetSocketAddress) super.getServiceAddress();
-       }
-
-       private class APRSessionConfigImpl extends BaseIoSessionConfig 
implements
-                       APRSessionConfig {
-
-       }
-       @Override
-       protected void write0(WriteRequest writeRequest) {
-               filterChain.fireFilterWrite(this, writeRequest);
        }
 }

Modified: 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/DefaultAPRSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/DefaultAPRSessionConfig.java?view=diff&rev=561368&r1=561367&r2=561368
==============================================================================
--- 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/DefaultAPRSessionConfig.java
 (original)
+++ 
mina/sandbox/jvermillard/apr/src/main/java/org/apache/mina/transport/apr/DefaultAPRSessionConfig.java
 Tue Jul 31 09:02:41 2007
@@ -3,5 +3,85 @@
 import org.apache.mina.common.support.BaseIoSessionConfig;
 
 public class DefaultAPRSessionConfig extends BaseIoSessionConfig implements 
APRSessionConfig {
+
+       public int getReceiveBufferSize() {
+               // TODO Auto-generated method stub
+               return 0;
+       }
+
+       public int getSendBufferSize() {
+               // TODO Auto-generated method stub
+               return 0;
+       }
+
+       public int getSoLinger() {
+               // TODO Auto-generated method stub
+               return 0;
+       }
+
+       public int getTrafficClass() {
+               // TODO Auto-generated method stub
+               return 0;
+       }
+
+       public boolean isKeepAlive() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public boolean isOobInline() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public boolean isReuseAddress() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public boolean isTcpNoDelay() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public void setKeepAlive(boolean keepAlive) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void setOobInline(boolean oobInline) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void setReceiveBufferSize(int receiveBufferSize) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void setReuseAddress(boolean reuseAddress) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void setSendBufferSize(int sendBufferSize) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void setSoLinger(int soLinger) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void setTcpNoDelay(boolean tcpNoDelay) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void setTrafficClass(int trafficClass) {
+               // TODO Auto-generated method stub
+               
+       }
        
 }


Reply via email to