Author: remm
Date: Wed May 30 07:17:08 2018
New Revision: 1832518
URL: http://svn.apache.org/viewvc?rev=1832518&view=rev
Log:
Refactor NIO2 timeouts with a utility method.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1832518&r1=1832517&r2=1832518&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Wed May 30
07:17:08 2018
@@ -492,7 +492,7 @@ public class Nio2Endpoint extends Abstra
}
}
}
- getSocket().write(buffer, getNio2WriteTimeout(),
TimeUnit.MILLISECONDS, attachment, this);
+ getSocket().write(buffer, toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS, attachment, this);
}
@Override
@@ -581,13 +581,13 @@ public class Nio2Endpoint extends Abstra
bufferedWrites.clear();
ByteBuffer[] array = arrayList.toArray(new
ByteBuffer[arrayList.size()]);
getSocket().write(array, 0, array.length,
- getNio2WriteTimeout(),
TimeUnit.MILLISECONDS,
+ toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS,
array, gatheringWriteCompletionHandler);
nestedWriteCompletionCount.get().decrementAndGet();
} else if (attachment.hasRemaining()) {
// Regular write
nestedWriteCompletionCount.get().incrementAndGet();
- getSocket().write(attachment,
getNio2WriteTimeout(),
+ getSocket().write(attachment,
toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS, attachment,
writeCompletionHandler);
nestedWriteCompletionCount.get().decrementAndGet();
} else {
@@ -641,7 +641,7 @@ public class Nio2Endpoint extends Abstra
bufferedWrites.clear();
ByteBuffer[] array = arrayList.toArray(new
ByteBuffer[arrayList.size()]);
getSocket().write(array, 0, array.length,
- getNio2WriteTimeout(),
TimeUnit.MILLISECONDS,
+ toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS,
array, gatheringWriteCompletionHandler);
nestedWriteCompletionCount.get().decrementAndGet();
} else {
@@ -903,7 +903,7 @@ public class Nio2Endpoint extends Abstra
return CompletionState.ERROR;
}
if (timeout == -1) {
- timeout = getNio2ReadTimeout();
+ timeout = toNio2Timeout(getReadTimeout());
}
if (block != BlockingMode.NON_BLOCK) {
try {
@@ -970,7 +970,7 @@ public class Nio2Endpoint extends Abstra
return CompletionState.ERROR;
}
if (timeout == -1) {
- timeout = getNio2WriteTimeout();
+ timeout = toNio2Timeout(getWriteTimeout());
}
if (block != BlockingMode.NON_BLOCK) {
try {
@@ -1117,7 +1117,7 @@ public class Nio2Endpoint extends Abstra
if (block) {
try {
integer = getSocket().read(to);
- nRead = integer.get(getNio2ReadTimeout(),
TimeUnit.MILLISECONDS).intValue();
+ nRead = integer.get(toNio2Timeout(getReadTimeout()),
TimeUnit.MILLISECONDS).intValue();
} catch (ExecutionException e) {
if (e.getCause() instanceof IOException) {
throw (IOException) e.getCause();
@@ -1136,7 +1136,7 @@ public class Nio2Endpoint extends Abstra
}
} else {
Nio2Endpoint.startInline();
- getSocket().read(to, getNio2ReadTimeout(),
TimeUnit.MILLISECONDS, this,
+ getSocket().read(to, toNio2Timeout(getReadTimeout()),
TimeUnit.MILLISECONDS, this,
readCompletionHandler);
Nio2Endpoint.endInline();
if (readPending.availablePermits() == 1) {
@@ -1229,7 +1229,7 @@ public class Nio2Endpoint extends Abstra
try {
do {
integer = getSocket().write(from);
- if (integer.get(getNio2WriteTimeout(),
TimeUnit.MILLISECONDS).intValue() < 0) {
+ if (integer.get(toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS).intValue() < 0) {
throw new
EOFException(sm.getString("iob.failedwrite"));
}
} while (from.hasRemaining());
@@ -1255,7 +1255,7 @@ public class Nio2Endpoint extends Abstra
// Before doing a blocking flush, make sure that any pending non
// blocking write has completed.
try {
- if (writePending.tryAcquire(getNio2WriteTimeout(),
TimeUnit.MILLISECONDS)) {
+ if (writePending.tryAcquire(toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS)) {
writePending.release();
} else {
throw new SocketTimeoutException();
@@ -1290,13 +1290,13 @@ public class Nio2Endpoint extends Abstra
bufferedWrites.clear();
ByteBuffer[] array = arrayList.toArray(new
ByteBuffer[arrayList.size()]);
Nio2Endpoint.startInline();
- getSocket().write(array, 0, array.length,
getNio2WriteTimeout(),
+ getSocket().write(array, 0, array.length,
toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS, array,
gatheringWriteCompletionHandler);
Nio2Endpoint.endInline();
} else if
(socketBufferHandler.getWriteBuffer().hasRemaining()) {
// Regular write
Nio2Endpoint.startInline();
-
getSocket().write(socketBufferHandler.getWriteBuffer(), getNio2WriteTimeout(),
+
getSocket().write(socketBufferHandler.getWriteBuffer(),
toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS,
socketBufferHandler.getWriteBuffer(),
writeCompletionHandler);
Nio2Endpoint.endInline();
@@ -1404,7 +1404,7 @@ public class Nio2Endpoint extends Abstra
getSocket().getBufHandler().configureReadBufferForWrite();
Nio2Endpoint.startInline();
getSocket().read(getSocket().getBufHandler().getReadBuffer(),
- getNio2ReadTimeout(), TimeUnit.MILLISECONDS, this,
awaitBytesHandler);
+ toNio2Timeout(getReadTimeout()),
TimeUnit.MILLISECONDS, this, awaitBytesHandler);
Nio2Endpoint.endInline();
}
}
@@ -1443,7 +1443,7 @@ public class Nio2Endpoint extends Abstra
data.length -= nRead;
getSocket().getBufHandler().configureWriteBufferForRead();
Nio2Endpoint.startInline();
- getSocket().write(buffer, getNio2WriteTimeout(),
TimeUnit.MILLISECONDS,
+ getSocket().write(buffer, toNio2Timeout(getWriteTimeout()),
TimeUnit.MILLISECONDS,
data, sendfileHandler);
Nio2Endpoint.endInline();
if (data.doneInline) {
@@ -1461,26 +1461,6 @@ public class Nio2Endpoint extends Abstra
}
- private long getNio2ReadTimeout() {
- long readTimeout = getReadTimeout();
- if (readTimeout > 0) {
- return readTimeout;
- }
- // NIO2 can't do infinite timeout so use Long.MAX_VALUE
- return Long.MAX_VALUE;
- }
-
-
- private long getNio2WriteTimeout() {
- long writeTimeout = getWriteTimeout();
- if (writeTimeout > 0) {
- return writeTimeout;
- }
- // NIO2 can't do infinite timeout so use Long.MAX_VALUE
- return Long.MAX_VALUE;
- }
-
-
@Override
protected void populateRemoteAddr() {
SocketAddress socketAddress = null;
@@ -1603,6 +1583,10 @@ public class Nio2Endpoint extends Abstra
}
}
+ public static long toNio2Timeout(long timeout) {
+ // NIO2 can't do infinite timeout so use Long.MAX_VALUE if timeout is
<= 0
+ return (timeout > 0) ? timeout : Long.MAX_VALUE;
+ }
public static void startInline() {
inlineCompletion.set(Boolean.TRUE);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]