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: [email protected]
For additional commands, e-mail: [email protected]