You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ni...@apache.org on 2005/12/03 19:31:15 UTC
svn commit: r351998 - in /directory/network/trunk/src:
java/org/apache/mina/common/ByteBuffer.java
java/org/apache/mina/common/ByteBufferProxy.java
test/org/apache/mina/common/ByteBufferTest.java
Author: niklas
Date: Sat Dec 3 10:31:01 2005
New Revision: 351998
URL: http://svn.apache.org/viewcvs?rev=351998&view=rev
Log:
Added the ByteBuffer.sweep() methods resolving issue DIRMINA-136
Modified:
directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java
directory/network/trunk/src/java/org/apache/mina/common/ByteBufferProxy.java
directory/network/trunk/src/test/org/apache/mina/common/ByteBufferTest.java
Modified: directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java?rev=351998&r1=351997&r2=351998&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java Sat Dec 3 10:31:01 2005
@@ -871,6 +871,20 @@
*/
public abstract ByteBuffer fillAndReset( int size );
+ /**
+ * Sweeps this buffer clean from any previous content. Sets the position to
+ * zero and the limit to the capacity and sets all bytes between position
+ * and limit to <code>NUL (0x00)</code>.
+ */
+ public abstract ByteBuffer sweep();
+
+ /**
+ * Sweeps this buffer clean from any previous content. Sets the position to
+ * zero and the limit to the capacity and sets all bytes between position
+ * and limit to the specified value.
+ */
+ public abstract ByteBuffer sweep( byte value );
+
private static class DefaultByteBuffer extends ByteBuffer
{
private java.nio.ByteBuffer buf;
@@ -1876,6 +1890,18 @@
{
autoExpand( size );
return position( position() + size );
+ }
+
+ public ByteBuffer sweep()
+ {
+ clear();
+ return fillAndReset( remaining() );
+ }
+
+ public ByteBuffer sweep( byte value )
+ {
+ clear();
+ return fillAndReset( value, remaining() );
}
public ByteBuffer fill( byte value, int size )
Modified: directory/network/trunk/src/java/org/apache/mina/common/ByteBufferProxy.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/common/ByteBufferProxy.java?rev=351998&r1=351997&r2=351998&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/common/ByteBufferProxy.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/common/ByteBufferProxy.java Sat Dec 3 10:31:01 2005
@@ -511,6 +511,18 @@
return this;
}
+ public ByteBuffer sweep()
+ {
+ buf.sweep();
+ return this;
+ }
+
+ public ByteBuffer sweep( byte value )
+ {
+ buf.sweep( value );
+ return this;
+ }
+
public boolean isAutoExpand()
{
return buf.isAutoExpand();
Modified: directory/network/trunk/src/test/org/apache/mina/common/ByteBufferTest.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/test/org/apache/mina/common/ByteBufferTest.java?rev=351998&r1=351997&r2=351998&view=diff
==============================================================================
--- directory/network/trunk/src/test/org/apache/mina/common/ByteBufferTest.java (original)
+++ directory/network/trunk/src/test/org/apache/mina/common/ByteBufferTest.java Sat Dec 3 10:31:01 2005
@@ -406,4 +406,34 @@
// This assertion is just to make sure that deserialization occurred.
Assert.assertNotSame( o, o2 );
}
+
+ public void testSweepWithZeros() throws Exception
+ {
+ ByteBuffer buf = ByteBuffer.allocate( 4 );
+ buf.putInt( 0xdeadbeef );
+ buf.clear();
+ Assert.assertEquals( 0xdeadbeef, buf.getInt() );
+ Assert.assertEquals( 4, buf.position() );
+ Assert.assertEquals( 4, buf.limit() );
+
+ buf.sweep();
+ Assert.assertEquals( 0, buf.position() );
+ Assert.assertEquals( 4, buf.limit() );
+ Assert.assertEquals( 0x0, buf.getInt() );
+ }
+
+ public void testSweepNonZeros() throws Exception
+ {
+ ByteBuffer buf = ByteBuffer.allocate( 4 );
+ buf.putInt( 0xdeadbeef );
+ buf.clear();
+ Assert.assertEquals( 0xdeadbeef, buf.getInt() );
+ Assert.assertEquals( 4, buf.position() );
+ Assert.assertEquals( 4, buf.limit() );
+
+ buf.sweep( ( byte ) 0x45 );
+ Assert.assertEquals( 0, buf.position() );
+ Assert.assertEquals( 4, buf.limit() );
+ Assert.assertEquals( 0x45454545, buf.getInt() );
+ }
}