olegk 2004/09/06 11:01:02
Modified: httpclient/src/java/org/apache/commons/httpclient
HttpConnection.java
httpclient release_notes.txt
Log:
PR #21329 (Add InputStream buffering)
Contributed by Bjarne Rasmussen <brasmussen -at- novell.com>
Reviewed by Oleg Kalnichevski & Michael Becke
Revision Changes Path
1.98 +20 -10
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpConnection.java
Index: HttpConnection.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpConnection.java,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -r1.97 -r1.98
--- HttpConnection.java 19 Jul 2004 20:08:06 -0000 1.97
+++ HttpConnection.java 6 Sep 2004 18:01:02 -0000 1.98
@@ -29,12 +29,12 @@
package org.apache.commons.httpclient;
+import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InterruptedIOException;
import java.io.OutputStream;
-import java.io.PushbackInputStream;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.Socket;
@@ -472,13 +472,14 @@
if (inputStream.available() == 0) {
try {
socket.setSoTimeout(1);
+ inputStream.mark(1);
int byteRead = inputStream.read();
if (byteRead == -1) {
// again - if the socket is reporting all data read,
// probably stale
isStale = true;
} else {
- inputStream.unread(byteRead);
+ inputStream.reset();
}
} finally {
socket.setSoTimeout(this.params.getSoTimeout());
@@ -690,7 +691,11 @@
if (outbuffersize > 2048) {
outbuffersize = 2048;
}
- inputStream = new PushbackInputStream(socket.getInputStream());
+ int inbuffersize = socket.getReceiveBufferSize();
+ if (inbuffersize > 2048) {
+ inbuffersize = 2048;
+ }
+ inputStream = new BufferedInputStream(socket.getInputStream(),
inbuffersize);
outputStream = new BufferedOutputStream(socket.getOutputStream(),
outbuffersize);
isOpen = true;
used = false;
@@ -741,7 +746,11 @@
if (outbuffersize > 2048) {
outbuffersize = 2048;
}
- inputStream = new PushbackInputStream(socket.getInputStream());
+ int inbuffersize = socket.getReceiveBufferSize();
+ if (inbuffersize > 2048) {
+ inbuffersize = 2048;
+ }
+ inputStream = new BufferedInputStream(socket.getInputStream(),
inbuffersize);
outputStream = new BufferedOutputStream(socket.getOutputStream(),
outbuffersize);
usingSecureSocket = true;
tunnelEstablished = true;
@@ -838,9 +847,10 @@
} else {
try {
this.socket.setSoTimeout(timeout);
+ inputStream.mark(1);
int byteRead = inputStream.read();
if (byteRead != -1) {
- inputStream.unread(byteRead);
+ inputStream.reset();
LOG.debug("Input data available");
result = true;
} else {
@@ -1269,7 +1279,7 @@
private Socket socket = null;
/** My InputStream. */
- private PushbackInputStream inputStream = null;
+ private InputStream inputStream = null;
/** My OutputStream. */
private OutputStream outputStream = null;
1.32 +4 -0 jakarta-commons/httpclient/release_notes.txt
Index: release_notes.txt
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/release_notes.txt,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- release_notes.txt 19 Jul 2004 22:02:35 -0000 1.31
+++ release_notes.txt 6 Sep 2004 18:01:02 -0000 1.32
@@ -2,7 +2,11 @@
-------------------
Changes since Alpha 1:
+ * 21329 - Added input buffering to improve performance
+ Contributed by Bjarne Rasmussen <brasmussen at novell.com>
+
* 29897 - Connection output buffer is set to a value not greater than 2k
+ Contributed by Oleg Kalnichevski <olegk at apache.org>
* 29636 - MultiThreadedHttpConnectionManager now support configuring the maximum
number of connections on a per host basis.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]