Author: trustin
Date: Tue Dec 12 22:42:19 2006
New Revision: 486514
URL: http://svn.apache.org/viewvc?view=rev&rev=486514
Log:
Merged changes from branches/1.0 (DIRMINA-321)
Added:
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/
- copied from r486512,
mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
- copied, changed from r486512,
mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
Modified:
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
Modified:
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
URL:
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java?view=diff&rev=486514&r1=486513&r2=486514
==============================================================================
---
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
(original)
+++
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
Tue Dec 12 22:42:19 2006
@@ -120,7 +120,7 @@
buf.putInt( objectSize );
in.readFully( buf.array(), 4, objectSize );
buf.position( 0 );
- buf.limit( objectSize );
+ buf.limit( objectSize + 4 );
Object answer = buf.getObject( classLoader );
buf.release();
Modified:
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
URL:
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java?view=diff&rev=486514&r1=486513&r2=486514
==============================================================================
---
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
(original)
+++
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
Tue Dec 12 22:42:19 2006
@@ -19,8 +19,8 @@
*/
package org.apache.mina.filter.codec.support;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.LinkedList;
+import java.util.Queue;
import org.apache.mina.common.ByteBuffer;
import org.apache.mina.common.WriteFuture;
@@ -34,13 +34,13 @@
*/
public abstract class SimpleProtocolEncoderOutput implements
ProtocolEncoderOutput
{
- private final List<ByteBuffer> bufferQueue = new ArrayList<ByteBuffer>();
+ private final Queue<ByteBuffer> bufferQueue = new LinkedList<ByteBuffer>();
public SimpleProtocolEncoderOutput()
{
}
- public List<ByteBuffer> getBufferQueue()
+ public Queue<ByteBuffer> getBufferQueue()
{
return bufferQueue;
}
@@ -52,53 +52,68 @@
public void mergeAll()
{
+ int sum = 0;
final int size = bufferQueue.size();
-
+
if( size < 2 )
{
// no need to merge!
return;
}
-
+
// Get the size of merged BB
- int sum = 0;
- for( int i = size - 1; i >= 0; i -- )
+ for( Object o: bufferQueue )
{
- sum += bufferQueue.get( i ).remaining();
+ sum += ( ( ByteBuffer ) o ).remaining();
}
-
+
// Allocate a new BB that will contain all fragments
ByteBuffer newBuf = ByteBuffer.allocate( sum );
-
+
// and merge all.
- for( ; !bufferQueue.isEmpty(); )
+ for( ;; )
{
- ByteBuffer buf = bufferQueue.remove( 0 );
-
+ ByteBuffer buf = bufferQueue.poll();
+ if( buf == null )
+ {
+ break;
+ }
+
newBuf.put( buf );
buf.release();
}
-
+
// Push the new buffer finally.
newBuf.flip();
- bufferQueue.add( newBuf );
+ bufferQueue.offer(newBuf);
}
public WriteFuture flush()
{
+ Queue bufferQueue = this.bufferQueue;
WriteFuture future = null;
-
- for( ; !bufferQueue.isEmpty(); )
+ if( bufferQueue.isEmpty() )
{
- ByteBuffer buf = bufferQueue.remove( 0 );
-
- // Flush only when the buffer has remaining.
- if( buf.hasRemaining() )
+ return null;
+ }
+ else
+ {
+ for( ;; )
{
- future = doFlush( buf );
+ ByteBuffer buf = ( ByteBuffer ) bufferQueue.poll();
+ if( buf == null )
+ {
+ break;
+ }
+
+ // Flush only when the buffer has remaining.
+ if( buf.hasRemaining() )
+ {
+ future = doFlush( buf );
+ }
}
}
-
+
return future;
}
Copied:
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
(from r486512,
mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java)
URL:
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java?view=diff&rev=486514&p1=mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java&r1=486512&p2=mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java&r2=486514
==============================================================================
---
mina/branches/1.0/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
(original)
+++
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
Tue Dec 12 22:42:19 2006
@@ -67,7 +67,7 @@
encoder.encode( session, expected, out );
Assert.assertEquals( 1, out.getBufferQueue().size() );
- ByteBuffer buf = ( ByteBuffer ) out.getBufferQueue().poll();
+ ByteBuffer buf = out.getBufferQueue().poll();
testDecoderAndInputStream( expected, buf );
}
Modified:
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
URL:
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java?view=diff&rev=486514&r1=486513&r2=486514
==============================================================================
---
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
(original)
+++
mina/branches/1.1/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
Tue Dec 12 22:42:19 2006
@@ -67,7 +67,7 @@
encoder.encode( session, "ABC", out );
Assert.assertEquals( 1, out.getBufferQueue().size() );
- ByteBuffer buf = out.getBufferQueue().remove(0);
+ ByteBuffer buf = out.getBufferQueue().poll();
Assert.assertEquals( 5, buf.remaining() );
Assert.assertEquals( 'A', buf.get() );
Assert.assertEquals( 'B', buf.get() );