You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2014/04/18 01:43:45 UTC
svn commit: r1588390 -
/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
Author: remm
Date: Thu Apr 17 23:43:45 2014
New Revision: 1588390
URL: http://svn.apache.org/r1588390
Log:
Simplify code (apparently unused parameters and methods).
Modified:
tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1588390&r1=1588389&r2=1588390&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Thu Apr 17 23:43:45 2014
@@ -18,6 +18,7 @@ package org.apache.coyote.http11;
import java.io.EOFException;
import java.io.IOException;
+import java.nio.ByteBuffer;
import java.nio.channels.Selector;
import org.apache.coyote.InputBuffer;
@@ -34,8 +35,6 @@ import org.apache.tomcat.util.net.Socket
/**
* Implementation of InputBuffer which provides HTTP request header parsing as
* well as transfer decoding.
- *
- * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
*/
public class InternalNioInputBuffer extends AbstractNioInputBuffer<NioChannel> {
@@ -82,57 +81,6 @@ public class InternalNioInputBuffer exte
socket = null;
}
-
- /**
- * Perform blocking read with a timeout if desired
- * @param timeout boolean - if we want to use the timeout data
- * @param block - true if the system should perform a blocking read, false otherwise
- * @return boolean - true if data was read, false is no data read, EOFException if EOF is reached
- * @throws IOException if a socket exception occurs
- * @throws EOFException if end of stream is reached
- */
- private int readSocket(boolean timeout, boolean block) throws IOException {
- int nRead = 0;
- socket.getBufHandler().getReadBuffer().clear();
- if ( block ) {
- Selector selector = null;
- try {
- selector = pool.get();
- } catch ( IOException x ) {
- // Ignore
- }
- try {
- NioEndpoint.KeyAttachment att =
- (NioEndpoint.KeyAttachment) socket.getAttachment(false);
- if (att == null) {
- throw new IOException("Key must be cancelled.");
- }
- nRead = pool.read(socket.getBufHandler().getReadBuffer(),
- socket, selector,
- socket.getIOChannel().socket().getSoTimeout());
- } catch ( EOFException eof ) {
- nRead = -1;
- } finally {
- if ( selector != null ) pool.put(selector);
- }
- } else {
- nRead = socket.read(socket.getBufHandler().getReadBuffer());
- }
- if (nRead > 0) {
- socket.getBufHandler().getReadBuffer().flip();
- socket.getBufHandler().getReadBuffer().limit(nRead);
- expand(nRead + pos);
- socket.getBufHandler().getReadBuffer().get(buf, pos, nRead);
- lastValid = pos + nRead;
- return nRead;
- } else if (nRead == -1) {
- //return false;
- throw new EOFException(sm.getString("iib.eof.error"));
- } else {
- return 0;
- }
- }
-
// ------------------------------------------------------ Protected Methods
@Override
@@ -158,30 +106,52 @@ public class InternalNioInputBuffer exte
@Override
protected boolean fill(boolean block) throws IOException, EOFException {
- return fill(true,block);
- }
-
-
- protected boolean fill(boolean timeout, boolean block)
- throws IOException, EOFException {
-
- boolean read = false;
-
if (parsingHeader) {
-
if (lastValid > headerBufferSize) {
throw new IllegalArgumentException
(sm.getString("iib.requestheadertoolarge.error"));
}
-
- // Do a simple read with a short timeout
- read = readSocket(timeout,block)>0;
} else {
lastValid = pos = end;
- // Do a simple read with a short timeout
- read = readSocket(timeout, block)>0;
}
- return read;
+ int nRead = 0;
+ ByteBuffer readBuffer = socket.getBufHandler().getReadBuffer();
+ readBuffer.clear();
+ if ( block ) {
+ Selector selector = null;
+ try {
+ selector = pool.get();
+ } catch ( IOException x ) {
+ // Ignore
+ }
+ try {
+ NioEndpoint.KeyAttachment att =
+ (NioEndpoint.KeyAttachment) socket.getAttachment(false);
+ if (att == null) {
+ throw new IOException("Key must be cancelled.");
+ }
+ nRead = pool.read(readBuffer,
+ socket, selector,
+ socket.getIOChannel().socket().getSoTimeout());
+ } catch ( EOFException eof ) {
+ nRead = -1;
+ } finally {
+ if ( selector != null ) pool.put(selector);
+ }
+ } else {
+ nRead = socket.read(readBuffer);
+ }
+ if (nRead > 0) {
+ readBuffer.flip();
+ readBuffer.limit(nRead);
+ expand(nRead + pos);
+ readBuffer.get(buf, pos, nRead);
+ lastValid = pos + nRead;
+ } else if (nRead == -1) {
+ //return false;
+ throw new EOFException(sm.getString("iib.eof.error"));
+ }
+ return nRead > 0;
}
@@ -204,7 +174,7 @@ public class InternalNioInputBuffer exte
throws IOException {
if (pos >= lastValid) {
- if (!fill(true,true)) //read body, must be blocking, as the thread is inside the app
+ if (!fill(true)) //read body, must be blocking, as the thread is inside the app
return -1;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org