Author: markt
Date: Wed Nov 12 10:49:24 2014
New Revision: 1638753

URL: http://svn.apache.org/r1638753
Log:
Use the SocketWrapper's write method

Modified:
    tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java?rev=1638753&r1=1638752&r2=1638753&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java Wed Nov 12 
10:49:24 2014
@@ -18,7 +18,6 @@ package org.apache.coyote.ajp;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.nio.channels.CompletionHandler;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -27,7 +26,6 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.net.Nio2Channel;
 import org.apache.tomcat.util.net.Nio2Endpoint;
-import org.apache.tomcat.util.net.SocketStatus;
 import org.apache.tomcat.util.net.SocketWrapperBase;
 
 /**
@@ -42,54 +40,18 @@ public class AjpNio2Processor extends Ab
     }
 
     /**
-     * The completion handler used for asynchronous write operations
-     */
-    protected CompletionHandler<Integer, SocketWrapperBase<Nio2Channel>> 
writeCompletionHandler;
-
-    /**
      * Flipped flag for read buffer.
      */
     protected boolean flipped = false;
 
-    /**
-     * Write pending flag.
-     */
-    protected volatile boolean writePending = false;
-
     public AjpNio2Processor(int packetSize, Nio2Endpoint endpoint0) {
         super(packetSize, endpoint0);
         response.setOutputBuffer(new SocketOutputBuffer());
-        this.writeCompletionHandler = new CompletionHandler<Integer, 
SocketWrapperBase<Nio2Channel>>() {
-            @Override
-            public void completed(Integer nBytes, 
SocketWrapperBase<Nio2Channel> attachment) {
-                boolean notify = false;
-                synchronized (writeCompletionHandler) {
-                    if (nBytes.intValue() < 0) {
-                        failed(new 
IOException(sm.getString("ajpprocessor.failedsend")), attachment);
-                        return;
-                    }
-                    writePending = false;
-                    if (!Nio2Endpoint.isInline()) {
-                        notify = true;
-                    }
-                }
-                if (notify) {
-                    endpoint.processSocket(attachment, 
SocketStatus.OPEN_WRITE, false);
-                }
-            }
-            @Override
-            public void failed(Throwable exc, SocketWrapperBase<Nio2Channel> 
attachment) {
-                attachment.setError(true);
-                writePending = false;
-                endpoint.processSocket(attachment, SocketStatus.DISCONNECT, 
true);
-            }
-        };
     }
 
     @Override
     public void recycle(boolean socketClosing) {
         super.recycle(socketClosing);
-        writePending = false;
         flipped = false;
     }
 
@@ -108,43 +70,12 @@ public class AjpNio2Processor extends Ab
 
 
     @Override
-    protected int output(byte[] src, int offset, int length, boolean block)
-            throws IOException {
+    protected int output(byte[] src, int offset, int length, boolean block) 
throws IOException {
 
         if (socketWrapper == null || socketWrapper.getSocket() == null)
             return -1;
 
-        ByteBuffer writeBuffer =
-                socketWrapper.getSocket().getBufHandler().getWriteBuffer();
-
-        int result = 0;
-        if (block) {
-            writeBuffer.clear();
-            writeBuffer.put(src, offset, length);
-            writeBuffer.flip();
-            try {
-                result = socketWrapper.getSocket().write(writeBuffer)
-                        .get(socketWrapper.getTimeout(), 
TimeUnit.MILLISECONDS).intValue();
-            } catch (InterruptedException | ExecutionException
-                    | TimeoutException e) {
-                throw new IOException(sm.getString("ajpprocessor.failedsend"), 
e);
-            }
-        } else {
-            synchronized (writeCompletionHandler) {
-                if (!writePending) {
-                    writeBuffer.clear();
-                    writeBuffer.put(src, offset, length);
-                    writeBuffer.flip();
-                    writePending = true;
-                    Nio2Endpoint.startInline();
-                    socketWrapper.getSocket().write(writeBuffer, 
socketWrapper.getTimeout(),
-                            TimeUnit.MILLISECONDS, socketWrapper, 
writeCompletionHandler);
-                    Nio2Endpoint.endInline();
-                    result = length;
-                }
-            }
-        }
-        return result;
+        return socketWrapper.write(block, src, offset, length);
     }
 
 



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

Reply via email to