[prev in list] [next in list] [prev in thread] [next in thread] 

List:       httpcomponents-commits
Subject:    svn commit: r234333 - in
From:       olegk () apache ! org
Date:       2005-08-21 20:01:59
Message-ID: 20050821200159.55951.qmail () minotaur ! apache ! org
[Download RAW message or body]

Author: olegk
Date: Sun Aug 21 13:01:54 2005
New Revision: 234333

URL: http://svn.apache.org/viewcvs?rev=234333&view=rev
Log:
Changed to reuse char buffer when reading / writing lines of text

Modified:
    jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java
  jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataTransmitter.java


Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java
                
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/a \
pache/http/impl/io/NIOHttpDataReceiver.java?rev=234333&r1=234332&r2=234333&view=diff \
                ==============================================================================
                
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java \
                (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java \
Sun Aug 21 13:01:54 2005 @@ -58,7 +58,8 @@
     private ByteBuffer buffer = null;
     
     private Charset charset = null;
-    private CharsetDecoder chardecoder;
+    private CharsetDecoder chardecoder = null;
+    private CharBuffer chbuffer = null;
     
     protected void initBuffer(int buffersize) {
         if (buffersize < 2048) {
@@ -68,6 +69,7 @@
         this.buffer.flip();
         this.charset = Charset.forName("US-ASCII");
         this.chardecoder = createCharDecoder();
+        this.chbuffer = CharBuffer.allocate(1024);
     }
 
     public void reset(final HttpParams params) {
@@ -148,9 +150,9 @@
     
     public String readLine() throws IOException {
         int noRead = 0;
+        this.chbuffer.clear();
         this.chardecoder.reset();
         StringBuffer line = new StringBuffer(); 
-        CharBuffer tmp = CharBuffer.allocate(1024);
         boolean retry = true;
         while (retry) {
             // attempt to find end of line (LF)
@@ -162,11 +164,13 @@
                 int origLimit = this.buffer.limit();
                 this.buffer.limit(i + 1);
                 for (;;) {
-                    CoderResult result = this.chardecoder.decode(this.buffer, tmp, \
true); +                    CoderResult result = this.chardecoder.decode(
+                    		this.buffer, this.chbuffer, true);
                     if (result.isOverflow()) {
-                        tmp.flip();
-                        line.append(tmp.array(), tmp.position(), tmp.remaining());
-                        tmp.clear();
+                        this.chbuffer.flip();
+                        line.append(this.chbuffer.array(), 
+                        		this.chbuffer.position(), this.chbuffer.remaining());
+                        this.chbuffer.clear();
                     }
                     if (result.isUnderflow()) {
                         break;
@@ -177,29 +181,31 @@
                 // end of line not found
                 if (this.buffer.hasRemaining()) {
                     // decode the entire buffer content
-                    this.chardecoder.decode(this.buffer, tmp, false);
+                    this.chardecoder.decode(this.buffer, this.chbuffer, false);
                 }
                 // discard the decoded content
                 noRead = fillBuffer();
                 if (noRead == -1) {
                     retry = false;
                     // terminate the decoding process
-                    this.chardecoder.decode(this.buffer, tmp, true);
+                    this.chardecoder.decode(this.buffer, this.chbuffer, true);
                 }
             }
             // append the decoded content to the line buffer
-            tmp.flip();
-            if (tmp.hasRemaining()) {
-                line.append(tmp.array(), tmp.position(), tmp.remaining());
+            this.chbuffer.flip();
+            if (this.chbuffer.hasRemaining()) {
+                line.append(this.chbuffer.array(), 
+                		this.chbuffer.position(), this.chbuffer.remaining());
             }
-            tmp.clear();
+            this.chbuffer.clear();
         }
         // flush the decoder
-        this.chardecoder.flush(tmp);
-        tmp.flip();
+        this.chardecoder.flush(this.chbuffer);
+        this.chbuffer.flip();
         // append the decoded content to the line buffer
-        if (tmp.hasRemaining()) {
-            line.append(tmp.array(), tmp.position(), tmp.remaining());
+        if (this.chbuffer.hasRemaining()) {
+            line.append(this.chbuffer.array(), 
+            		this.chbuffer.position(), this.chbuffer.remaining());
         }
         if (noRead == -1 && line.length() == 0) {
             // indicate the end of stream

Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataTransmitter.java
                
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/a \
pache/http/impl/io/NIOHttpDataTransmitter.java?rev=234333&r1=234332&r2=234333&view=diff
 ==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataTransmitter.java \
                (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataTransmitter.java \
Sun Aug 21 13:01:54 2005 @@ -60,6 +60,7 @@
 
     private Charset charset = null;
     private CharsetEncoder charencoder = null;
+    private CharBuffer chbuffer = null;
 
     protected void initBuffer(int buffersize) {
         if (buffersize < 2048) {
@@ -68,6 +69,7 @@
         this.buffer = ByteBuffer.allocateDirect(buffersize);
         this.charset = Charset.forName("US-ASCII");
         this.charencoder = createCharEncoder();
+        this.chbuffer = CharBuffer.allocate(1024);
     }
     
     public void reset(final HttpParams params) {
@@ -171,22 +173,21 @@
         // Do not bother if the string is empty
         if (s.length() > 0 ) {
         	this.charencoder.reset();
-            CharBuffer tmp = CharBuffer.allocate(1024);
             // transfer the string in small chunks
             int remaining = s.length();
             int offset = 0;
             while (remaining > 0) {
-                int l = tmp.remaining();
+                int l = this.chbuffer.remaining();
                 boolean eol = false;
                 if (remaining < l) {
                     l = remaining;
                     // terminate the encoding process
                     eol = true;
                 }
-                tmp.put(s, offset, offset + l);
-                tmp.flip();
-                write(this.charencoder, tmp, eol);
-                tmp.compact();
+                this.chbuffer.put(s, offset, offset + l);
+                this.chbuffer.flip();
+                write(this.charencoder, this.chbuffer, eol);
+                this.chbuffer.compact();
                 offset += l;
                 remaining -= l;
             }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic