Author: markt Date: Thu Sep 5 22:27:09 2013 New Revision: 1520444 URL: http://svn.apache.org/r1520444 Log: Refactoring. Extract ByteBufferHolder into a separate class that can be used by HTTP and AJP.
Added: tomcat/trunk/java/org/apache/coyote/ByteBufferHolder.java (with props) Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java Added: tomcat/trunk/java/org/apache/coyote/ByteBufferHolder.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ByteBufferHolder.java?rev=1520444&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ByteBufferHolder.java (added) +++ tomcat/trunk/java/org/apache/coyote/ByteBufferHolder.java Thu Sep 5 22:27:09 2013 @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.coyote; + +import java.nio.ByteBuffer; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * Simple wrapper for a {@link ByteBuffer} that remembers if the buffer has been + * flipped or not. + */ +public class ByteBufferHolder { + + private final ByteBuffer buf; + private final AtomicBoolean flipped; + + public ByteBufferHolder(ByteBuffer buf, boolean flipped) { + this.buf = buf; + this.flipped = new AtomicBoolean(flipped); + } + + + public ByteBuffer getBuf() { + return buf; + } + + + public boolean isFlipped() { + return flipped.get(); + } + + + public boolean flip() { + if (flipped.compareAndSet(false, true)) { + buf.flip(); + return true; + } else { + return false; + } + } + + + public boolean hasData() { + if (flipped.get()) { + return buf.remaining()>0; + } else { + return buf.position()>0; + } + } +} \ No newline at end of file Propchange: tomcat/trunk/java/org/apache/coyote/ByteBufferHolder.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java?rev=1520444&r1=1520443&r2=1520444&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java Thu Sep 5 22:27:09 2013 @@ -33,6 +33,7 @@ import javax.servlet.http.HttpUpgradeHan import org.apache.coyote.AbstractProcessor; import org.apache.coyote.ActionCode; import org.apache.coyote.AsyncContextCallback; +import org.apache.coyote.ByteBufferHolder; import org.apache.coyote.InputBuffer; import org.apache.coyote.OutputBuffer; import org.apache.coyote.Request; @@ -1669,47 +1670,4 @@ public abstract class AbstractAjpProcess return bytesWritten; } } - - - protected static class ByteBufferHolder { - private final ByteBuffer buf; - private final AtomicBoolean flipped; - public ByteBufferHolder(ByteBuffer buf, boolean flipped) { - this.buf = buf; - this.flipped = new AtomicBoolean(flipped); - } - public ByteBuffer getBuf() { - return buf; - } - public boolean isFlipped() { - return flipped.get(); - } - - public boolean flip() { - if (flipped.compareAndSet(false, true)) { - buf.flip(); - return true; - } else { - return false; - } - } - - public boolean hasData() { - if (flipped.get()) { - return buf.remaining()>0; - } else { - return buf.position()>0; - } - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(super.toString()); - builder.append("[flipped="); - builder.append(isFlipped()?"true, remaining=" : "false, position="); - builder.append(isFlipped()? buf.remaining(): buf.position()); - builder.append("]"); - return builder.toString(); - } - } } Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java?rev=1520444&r1=1520443&r2=1520444&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java Thu Sep 5 22:27:09 2013 @@ -17,14 +17,13 @@ package org.apache.coyote.http11; import java.io.IOException; -import java.nio.ByteBuffer; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.Iterator; import java.util.concurrent.LinkedBlockingDeque; -import java.util.concurrent.atomic.AtomicBoolean; import org.apache.coyote.ActionCode; +import org.apache.coyote.ByteBufferHolder; import org.apache.coyote.OutputBuffer; import org.apache.coyote.Response; import org.apache.coyote.http11.filters.GzipOutputFilter; @@ -672,48 +671,4 @@ public abstract class AbstractOutputBuff } return result; } - - - protected static class ByteBufferHolder { - private final ByteBuffer buf; - private final AtomicBoolean flipped; - public ByteBufferHolder(ByteBuffer buf, boolean flipped) { - this.buf = buf; - this.flipped = new AtomicBoolean(flipped); - } - public ByteBuffer getBuf() { - return buf; - } - public boolean isFlipped() { - return flipped.get(); - } - - public boolean flip() { - if (flipped.compareAndSet(false, true)) { - buf.flip(); - return true; - } else { - return false; - } - } - - public boolean hasData() { - if (flipped.get()) { - return buf.remaining()>0; - } else { - return buf.position()>0; - } - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(super.toString()); - builder.append("[flipped="); - builder.append(isFlipped()?"true, remaining=" : "false, position="); - builder.append(isFlipped()? buf.remaining(): buf.position()); - builder.append("]"); - return builder.toString(); - } - - } } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java?rev=1520444&r1=1520443&r2=1520444&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java Thu Sep 5 22:27:09 2013 @@ -23,6 +23,7 @@ import java.util.Iterator; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; +import org.apache.coyote.ByteBufferHolder; import org.apache.coyote.OutputBuffer; import org.apache.coyote.Response; import org.apache.tomcat.jni.Socket; Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java?rev=1520444&r1=1520443&r2=1520444&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java Thu Sep 5 22:27:09 2013 @@ -23,6 +23,7 @@ import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.util.Iterator; +import org.apache.coyote.ByteBufferHolder; import org.apache.coyote.OutputBuffer; import org.apache.coyote.Response; import org.apache.tomcat.util.buf.ByteChunk; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org