You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2006/08/01 14:05:18 UTC
svn commit: r427548 - in /jakarta/httpcomponents/httpnio/trunk/src:
java/org/apache/http/nio/ test/org/apache/http/nio/ test/tests/performance/
Author: olegk
Date: Tue Aug 1 05:05:17 2006
New Revision: 427548
URL: http://svn.apache.org/viewvc?rev=427548&view=rev
Log:
Brought NIO based HTTP data receiver and transmitter up to date with the current state of the HttpCore API
Modified:
jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOHttpDataTransmitter.java
jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataReceiver.java
jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataTransmitter.java
jakarta/httpcomponents/httpnio/trunk/src/test/org/apache/http/nio/TestNIOHttpTransmitterAndReceiver.java
jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/ChunkedIOvsContentLengthDelimIOTest.java
jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataReceiverFactory.java
jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataTransmitterFactory.java
jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/HttpNIOvsHttpOIOTest.java
jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/RawNIOvsRawOIOTest.java
Modified: jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOHttpDataTransmitter.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOHttpDataTransmitter.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOHttpDataTransmitter.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOHttpDataTransmitter.java Tue Aug 1 05:05:17 2006
@@ -37,6 +37,7 @@
import java.nio.charset.CoderResult;
import java.nio.charset.CodingErrorAction;
+import org.apache.http.io.CharArrayBuffer;
import org.apache.http.io.HttpDataTransmitter;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
@@ -163,15 +164,15 @@
}
}
- public void writeLine(final String s) throws IOException {
- if (s == null) {
+ public void writeLine(final CharArrayBuffer buffer) throws IOException {
+ if (buffer == null) {
return;
}
- // Do not bother if the string is empty
- if (s.length() > 0 ) {
+ // Do not bother if the buffer is empty
+ if (buffer.length() > 0 ) {
this.charencoder.reset();
// transfer the string in small chunks
- int remaining = s.length();
+ int remaining = buffer.length();
int offset = 0;
while (remaining > 0) {
int l = this.chbuffer.remaining();
@@ -181,7 +182,7 @@
// terminate the encoding process
eol = true;
}
- this.chbuffer.put(s, offset, offset + l);
+ this.chbuffer.put(buffer.buffer(), offset, offset + l);
this.chbuffer.flip();
write(this.charencoder, this.chbuffer, eol);
this.chbuffer.compact();
@@ -194,4 +195,17 @@
writeCRLF();
}
+ public void writeLine(final String s) throws IOException {
+ if (s == null) {
+ return;
+ }
+ if (s.length() > 0) {
+ CharArrayBuffer tmp = new CharArrayBuffer(s.length());
+ tmp.append(s);
+ writeLine(tmp);
+ } else {
+ write(CRLF);
+ }
+ }
+
}
Modified: jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataReceiver.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataReceiver.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataReceiver.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataReceiver.java Tue Aug 1 05:05:17 2006
@@ -50,7 +50,7 @@
private final SocketChannel channel;
- public NIOSocketHttpDataReceiver(final Socket socket) throws IOException {
+ public NIOSocketHttpDataReceiver(final Socket socket, int buffersize) throws IOException {
super();
if (socket == null) {
throw new IllegalArgumentException("Socket may not be null");
@@ -59,9 +59,11 @@
throw new IllegalArgumentException("Socket does not implement NIO channel");
}
this.channel = socket.getChannel();
- int buffersize = socket.getReceiveBufferSize();
- if (buffersize < 2048) {
- buffersize = 2048;
+ if (buffersize < 0) {
+ buffersize = socket.getReceiveBufferSize();
+ }
+ if (buffersize < 1024) {
+ buffersize = 1024;
}
initBuffer(buffersize);
}
Modified: jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataTransmitter.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataTransmitter.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataTransmitter.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/java/org/apache/http/nio/NIOSocketHttpDataTransmitter.java Tue Aug 1 05:05:17 2006
@@ -48,7 +48,7 @@
private final SocketChannel channel;
- public NIOSocketHttpDataTransmitter(final Socket socket) throws SocketException {
+ public NIOSocketHttpDataTransmitter(final Socket socket, int buffersize) throws SocketException {
super();
if (socket == null) {
throw new IllegalArgumentException("Socket may not be null");
@@ -57,9 +57,11 @@
throw new IllegalArgumentException("Socket does not implement NIO channel");
}
this.channel = socket.getChannel();
- int buffersize = socket.getSendBufferSize();
- if (buffersize < 2048) {
- buffersize = 2048;
+ if (buffersize < 0) {
+ buffersize = socket.getReceiveBufferSize();
+ }
+ if (buffersize < 1024) {
+ buffersize = 1024;
}
initBuffer(buffersize);
}
Modified: jakarta/httpcomponents/httpnio/trunk/src/test/org/apache/http/nio/TestNIOHttpTransmitterAndReceiver.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/test/org/apache/http/nio/TestNIOHttpTransmitterAndReceiver.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/test/org/apache/http/nio/TestNIOHttpTransmitterAndReceiver.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/test/org/apache/http/nio/TestNIOHttpTransmitterAndReceiver.java Tue Aug 1 05:05:17 2006
@@ -34,6 +34,7 @@
import java.nio.channels.ReadableByteChannel;
import org.apache.http.impl.DefaultHttpParams;
+import org.apache.http.io.CharArrayBuffer;
import org.apache.http.nio.NIOHttpDataReceiver;
import org.apache.http.nio.NIOHttpDataTransmitter;
import org.apache.http.nio.mockup.NIOHttpDataReceiverMockup;
@@ -120,7 +121,8 @@
transmitter.writeLine(teststrs[i]);
}
//this write operation should have no effect
- transmitter.writeLine(null);
+ transmitter.writeLine((String)null);
+ transmitter.writeLine((CharArrayBuffer)null);
transmitter.flush();
NIOHttpDataReceiverMockup receiver = new NIOHttpDataReceiverMockup(transmitter.getData());
@@ -210,7 +212,8 @@
transmitter.writeLine(teststrs[i]);
}
//this write operation should have no effect
- transmitter.writeLine(null);
+ transmitter.writeLine((String)null);
+ transmitter.writeLine((CharArrayBuffer)null);
transmitter.flush();
NIOHttpDataReceiverMockup receiver = new NIOHttpDataReceiverMockup(transmitter.getData(), 1024);
Modified: jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/ChunkedIOvsContentLengthDelimIOTest.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/ChunkedIOvsContentLengthDelimIOTest.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/ChunkedIOvsContentLengthDelimIOTest.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/ChunkedIOvsContentLengthDelimIOTest.java Tue Aug 1 05:05:17 2006
@@ -95,7 +95,7 @@
Socket conn = new Socket("localhost", PORT);
try {
HttpDataTransmitter datatransmitter =
- new SocketHttpDataTransmitter(conn);
+ new SocketHttpDataTransmitter(conn, BUFFER_SIZE);
OutputStream out = null;
if (chunked) {
out = new ChunkedOutputStream(datatransmitter);
@@ -118,7 +118,7 @@
Thread.sleep(100);
}
} finally {
- t.destroy();
+ t.interrupt();
t.join(1000);
}
}
Modified: jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataReceiverFactory.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataReceiverFactory.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataReceiverFactory.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataReceiverFactory.java Tue Aug 1 05:05:17 2006
@@ -50,6 +50,8 @@
*/
public class DefaultHttpDataReceiverFactory implements HttpDataReceiverFactory {
+ private static int BUFFER_SIZE = 8 * 1024;
+
private boolean useNIO;
public DefaultHttpDataReceiverFactory(boolean useNIO) {
@@ -67,15 +69,15 @@
}
if (socket instanceof SSLSocket) {
if (this.useNIO) {
- return new NIOSocketHttpDataReceiver(socket);
+ return new NIOSocketHttpDataReceiver(socket, BUFFER_SIZE);
} else {
- return new SocketHttpDataReceiver(socket);
+ return new SocketHttpDataReceiver(socket, BUFFER_SIZE);
}
} else {
if (this.useNIO) {
- return new NIOSocketHttpDataReceiver(socket);
+ return new NIOSocketHttpDataReceiver(socket, BUFFER_SIZE);
} else {
- return new SocketHttpDataReceiver(socket);
+ return new SocketHttpDataReceiver(socket, BUFFER_SIZE);
}
}
}
Modified: jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataTransmitterFactory.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataTransmitterFactory.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataTransmitterFactory.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/DefaultHttpDataTransmitterFactory.java Tue Aug 1 05:05:17 2006
@@ -49,6 +49,8 @@
* @since 4.0
*/
public class DefaultHttpDataTransmitterFactory implements HttpDataTransmitterFactory {
+
+ private static int BUFFER_SIZE = 8 * 1024;
private boolean useNIO;
@@ -67,15 +69,15 @@
}
if (socket instanceof SSLSocket) {
if (this.useNIO) {
- return new NIOSocketHttpDataTransmitter(socket);
+ return new NIOSocketHttpDataTransmitter(socket, BUFFER_SIZE);
} else {
- return new SocketHttpDataTransmitter(socket);
+ return new SocketHttpDataTransmitter(socket, BUFFER_SIZE);
}
} else {
if (this.useNIO) {
- return new NIOSocketHttpDataTransmitter(socket);
+ return new NIOSocketHttpDataTransmitter(socket, BUFFER_SIZE);
} else {
- return new SocketHttpDataTransmitter(socket);
+ return new SocketHttpDataTransmitter(socket, BUFFER_SIZE);
}
}
}
Modified: jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/HttpNIOvsHttpOIOTest.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/HttpNIOvsHttpOIOTest.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/HttpNIOvsHttpOIOTest.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/HttpNIOvsHttpOIOTest.java Tue Aug 1 05:05:17 2006
@@ -136,7 +136,7 @@
Thread.sleep(100);
}
} finally {
- t.destroy();
+ t.interrupt();
t.join(1000);
}
}
Modified: jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/RawNIOvsRawOIOTest.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/RawNIOvsRawOIOTest.java?rev=427548&r1=427547&r2=427548&view=diff
==============================================================================
--- jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/RawNIOvsRawOIOTest.java (original)
+++ jakarta/httpcomponents/httpnio/trunk/src/test/tests/performance/RawNIOvsRawOIOTest.java Tue Aug 1 05:05:17 2006
@@ -91,7 +91,7 @@
}
Thread.sleep(100);
}
- t.destroy();
+ t.interrupt();
t.join(1000);
}