Author: trustin
Date: Wed Dec 13 00:23:46 2006
New Revision: 486545
URL: http://svn.apache.org/viewvc?view=rev&rev=486545
Log:
Resolved issue: DIRMINA-323 (Remove ByteBuffer pooling / acquire() / release())
* Removed PooledByteBufferAllocator
* Removed ByteBuffer.acquire() and release()
* Fixed compilation errors and tests caused by the changes above
Removed:
mina/trunk/core/src/main/java/org/apache/mina/common/PooledByteBufferAllocator.java
mina/trunk/core/src/main/java/org/apache/mina/util/ByteBufferUtil.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java
mina/trunk/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java
mina/trunk/core/src/main/java/org/apache/mina/common/SimpleByteBufferAllocator.java
mina/trunk/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
mina/trunk/core/src/main/java/org/apache/mina/handler/support/IoSessionInputStream.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
mina/trunk/core/src/test/java/org/apache/mina/common/ByteBufferTest.java
mina/trunk/filter-codec-netty/src/main/java/org/apache/mina/filter/codec/netty/NettyEncoder.java
mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/CompressionFilter.java
mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/support/Zlib.java
mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java
mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLByteBufferPool.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java Wed
Dec 13 00:23:46 2006
@@ -40,7 +40,6 @@
import java.nio.charset.CoderResult;
import org.apache.mina.common.support.ByteBufferHexDumper;
-import org.apache.mina.filter.codec.ProtocolEncoderOutput;
/**
* A byte buffer used by MINA applications.
@@ -53,8 +52,6 @@
* <li>It doesn't provide useful getters and putters such as
* <code>fill</code>, <code>get/putString</code>, and
* <code>get/putAsciiInt()</code> enough.</li>
- * <li>It is hard to distinguish if the buffer is created from MINA buffer
- * pool or not. MINA have to return used buffers back to pool.</li>
* <li>It is difficult to write variable-length data due to its fixed
* capacity</li>
* </ul>
@@ -62,51 +59,28 @@
*
* <h2>Allocation</h2>
* <p>
- * You can get a heap buffer from buffer pool:
+ * You can allocate a new heap buffer.
* <pre>
* ByteBuffer buf = ByteBuffer.allocate(1024, false);
* </pre>
- * you can also get a direct buffer from buffer pool:
+ * you can also allocate a new direct buffer:
* <pre>
* ByteBuffer buf = ByteBuffer.allocate(1024, true);
* </pre>
* or you can set your preference.
* <pre>
* // Prefer heap buffers to direct buffers.
- * ByteBuffer.setUseDirectBuffer(false);
+ * ByteBuffer.setPreferDirectBuffer(false);
*
* // Try to allocate a heap buffer first, and then a direct buffer.
* ByteBuffer buf = ByteBuffer.allocate(1024);
* </pre>
* </p>
*
- * <h2>Acquire/Release</h2>
- * <p>
- * <b>Please note that you never need to release the allocated buffer</b>
- * because MINA will release it automatically when:
- * <ul>
- * <li>You pass the buffer by calling [EMAIL PROTECTED]
IoSession#write(Object)}.</li>
- * <li>You pass the buffer by calling [EMAIL PROTECTED]
IoFilter.NextFilter#filterWrite(IoSession,IoFilter.WriteRequest)}.</li>
- * <li>You pass the buffer by calling [EMAIL PROTECTED]
ProtocolEncoderOutput#write(ByteBuffer)}.</li>
- * </ul>
- * And, you don't need to release any [EMAIL PROTECTED] ByteBuffer} which is
passed as a parameter
- * of [EMAIL PROTECTED] IoHandler#messageReceived(IoSession, Object)} method.
They are released
- * automatically when the method returns.
- * <p>
- * You have to release buffers manually by calling [EMAIL PROTECTED]
#release()} when:
- * <ul>
- * <li>You allocated a buffer, but didn't pass the buffer to any of two
methods above.</li>
- * <li>You called [EMAIL PROTECTED] #acquire()} to prevent the buffer from
being released.</li>
- * </ul>
- * </p>
- *
* <h2>Wrapping existing NIO buffers and arrays</h2>
* <p>
* This class provides a few <tt>wrap(...)</tt> methods that wraps
- * any NIO buffers and byte arrays. Wrapped MINA buffers are not returned
- * to the buffer pool by default to prevent unexpected memory leakage by
default.
- * In case you want to make it pooled, you can call [EMAIL PROTECTED]
#setPooled(boolean)}
- * with <tt>true</tt> flag to enable pooling.
+ * any NIO buffers and byte arrays.
*
* <h2>AutoExpand</h2>
* <p>
@@ -135,20 +109,20 @@
* [EMAIL PROTECTED] #duplicate()}, [EMAIL PROTECTED] #slice()}, or [EMAIL
PROTECTED] #asReadOnlyBuffer()}.
* They are useful especially when you broadcast the same messages to
* multiple [EMAIL PROTECTED] IoSession}s. Please note that the derived
buffers are
- * neither pooled nor auto-expandable. Trying to expand a derived buffer will
- * raise [EMAIL PROTECTED] IllegalStateException}.
+ * not auto-expandable. Trying to expand a derived buffer will raise
+ * [EMAIL PROTECTED] IllegalStateException}.
* </p>
*
- * <h2>Changing Buffer Allocation and Management Policy</h2>
+ * <h2>Changing Buffer Allocation Policy</h2>
* <p>
* MINA provides a [EMAIL PROTECTED] ByteBufferAllocator} interface to let you
override
- * the default buffer management behavior. There are two allocators provided
- * out-of-the-box:
+ * the default buffer management behavior. There's only one allocator
+ * provided out-of-the-box:
* <ul>
- * <li>[EMAIL PROTECTED] PooledByteBufferAllocator} (Default)</li>
* <li>[EMAIL PROTECTED] SimpleByteBufferAllocator}</li>
* </ul>
- * You can change the allocator by calling [EMAIL PROTECTED]
#setAllocator(ByteBufferAllocator)}.
+ * You can implement your own allocator and use it by calling
+ * [EMAIL PROTECTED] #setAllocator(ByteBufferAllocator)}.
* </p>
*
* @author The Apache Directory Project ([email protected])
@@ -267,9 +241,6 @@
/**
* Wraps the specified byte array into MINA heap buffer.
- * Please note that MINA buffers are going to be pooled, and
- * therefore there can be waste of memory if you wrap
- * your byte array specifying <tt>offset</tt> and <tt>length</tt>.
*/
public static ByteBuffer wrap( byte[] byteArray, int offset, int length )
{
@@ -281,24 +252,6 @@
}
/**
- * Increases the internal reference count of this buffer to defer
- * automatic release. You have to invoke [EMAIL PROTECTED] #release()} as
many
- * as you invoked this method to release this buffer.
- *
- * @throws IllegalStateException if you attempt to acquire already
- * released buffer.
- */
- public abstract void acquire();
-
- /**
- * Releases the specified buffer to buffer pool.
- *
- * @throws IllegalStateException if you attempt to release already
- * released buffer.
- */
- public abstract void release();
-
- /**
* Returns the underlying NIO buffer instance.
*/
public abstract java.nio.ByteBuffer buf();
@@ -352,27 +305,6 @@
* <tt>true</tt>.
*/
public abstract ByteBuffer expand( int pos, int expectedRemaining );
-
- /**
- * Returns <tt>true</tt> if and only if this buffer is returned back
- * to the buffer pool when released.
- * <p>
- * The default value of this property is <tt>true</tt> if and only if you
- * allocated this buffer using [EMAIL PROTECTED] #allocate(int)} or [EMAIL
PROTECTED] #allocate(int, boolean)},
- * or <tt>false</tt> otherwise. (i.e. [EMAIL PROTECTED] #wrap(byte[])},
[EMAIL PROTECTED] #wrap(byte[], int, int)},
- * and [EMAIL PROTECTED] #wrap(java.nio.ByteBuffer)})
- */
- public abstract boolean isPooled();
-
- /**
- * Sets whether this buffer is returned back to the buffer pool when
released.
- * <p>
- * The default value of this property is <tt>true</tt> if and only if you
- * allocated this buffer using [EMAIL PROTECTED] #allocate(int)} or [EMAIL
PROTECTED] #allocate(int, boolean)},
- * or <tt>false</tt> otherwise. (i.e. [EMAIL PROTECTED] #wrap(byte[])},
[EMAIL PROTECTED] #wrap(byte[], int, int)},
- * and [EMAIL PROTECTED] #wrap(java.nio.ByteBuffer)})
- */
- public abstract void setPooled( boolean pooled );
/**
* @see java.nio.Buffer#position()
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java
Wed Dec 13 00:23:46 2006
@@ -64,16 +64,6 @@
this.buf = buf;
}
- public void acquire()
- {
- buf.acquire();
- }
-
- public void release()
- {
- buf.release();
- }
-
public boolean isDirect()
{
return buf.isDirect();
@@ -574,16 +564,6 @@
return this;
}
- public boolean isPooled()
- {
- return buf.isPooled();
- }
-
- public void setPooled( boolean pooled )
- {
- buf.setPooled( pooled );
- }
-
public Object getObject() throws ClassNotFoundException
{
return buf.getObject();
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/SimpleByteBufferAllocator.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/SimpleByteBufferAllocator.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/common/SimpleByteBufferAllocator.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/common/SimpleByteBufferAllocator.java
Wed Dec 13 00:23:46 2006
@@ -49,12 +49,12 @@
{
nioBuffer = java.nio.ByteBuffer.allocate( capacity );
}
- return new SimpleByteBuffer( nioBuffer );
+ return new SimpleByteBuffer( nioBuffer, false );
}
public ByteBuffer wrap( java.nio.ByteBuffer nioBuffer )
{
- return new SimpleByteBuffer( nioBuffer );
+ return new SimpleByteBuffer( nioBuffer, false );
}
public void dispose()
@@ -64,42 +64,13 @@
private static class SimpleByteBuffer extends BaseByteBuffer
{
private java.nio.ByteBuffer buf;
- private int refCount = 1;
+ private boolean derived;
- protected SimpleByteBuffer( java.nio.ByteBuffer buf )
+ protected SimpleByteBuffer( java.nio.ByteBuffer buf, boolean derived )
{
this.buf = buf;
+ this.derived = derived;
buf.order( ByteOrder.BIG_ENDIAN );
- refCount = 1;
- }
-
- public synchronized void acquire()
- {
- if( refCount <= 0 )
- {
- throw new IllegalStateException( "Already released buffer." );
- }
-
- refCount ++;
- }
-
- public void release()
- {
- synchronized( this )
- {
- if( refCount <= 0 )
- {
- refCount = 0;
- throw new IllegalStateException(
- "Already released buffer. You released the buffer
too many times." );
- }
-
- refCount --;
- if( refCount > 0)
- {
- return;
- }
- }
}
public java.nio.ByteBuffer buf()
@@ -107,17 +78,13 @@
return buf;
}
- public boolean isPooled()
- {
- return false;
- }
-
- public void setPooled( boolean pooled )
- {
- }
-
protected void capacity0( int requestedCapacity )
{
+ if( derived )
+ {
+ throw new IllegalStateException( "Derived buffers cannot be
expanded." );
+ }
+
int newCapacity = MINIMUM_CAPACITY;
while( newCapacity < requestedCapacity )
{
@@ -142,15 +109,15 @@
}
public ByteBuffer duplicate() {
- return new SimpleByteBuffer( this.buf.duplicate() );
+ return new SimpleByteBuffer( this.buf.duplicate(), true );
}
public ByteBuffer slice() {
- return new SimpleByteBuffer( this.buf.slice() );
+ return new SimpleByteBuffer( this.buf.slice(), true );
}
public ByteBuffer asReadOnlyBuffer() {
- return new SimpleByteBuffer( this.buf.asReadOnlyBuffer() );
+ return new SimpleByteBuffer( this.buf.asReadOnlyBuffer(), true );
}
public byte[] array()
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java
Wed Dec 13 00:23:46 2006
@@ -35,7 +35,6 @@
import org.apache.mina.common.IoSession;
import org.apache.mina.common.IoFilter.NextFilter;
import org.apache.mina.common.IoFilter.WriteRequest;
-import org.apache.mina.util.ByteBufferUtil;
import org.apache.mina.util.SessionLog;
/**
@@ -698,27 +697,13 @@
public void messageReceived( NextFilter nextFilter, IoSession session,
Object message ) throws Exception
{
- try
- {
- session.getHandler().messageReceived( session, message );
- }
- finally
- {
- ByteBufferUtil.releaseIfPossible( message );
- }
+ session.getHandler().messageReceived( session, message );
}
public void messageSent( NextFilter nextFilter, IoSession session,
Object message ) throws Exception
{
- try
- {
- session.getHandler().messageSent( session, message );
- }
- finally
- {
- ByteBufferUtil.releaseIfPossible( message );
- }
+ session.getHandler().messageSent( session, message );
}
public void filterWrite( NextFilter nextFilter,
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java
Wed Dec 13 00:23:46 2006
@@ -194,7 +194,6 @@
ByteBuffer buf = ( ByteBuffer ) session.getAttribute( BUFFER );
if( buf != null )
{
- buf.release();
session.removeAttribute( BUFFER );
}
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
Wed Dec 13 00:23:46 2006
@@ -178,9 +178,6 @@
disposeDecoder( session );
}
- // Release the read buffer.
- in.release();
-
decoderOut.flush();
}
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java
Wed Dec 13 00:23:46 2006
@@ -87,7 +87,6 @@
int objectSize = buf.position() - 4;
if( objectSize > maxObjectSize )
{
- buf.release();
throw new IllegalArgumentException( "The encoded object is too
big: " + objectSize + " (> " + maxObjectSize + ')' );
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java
Wed Dec 13 00:23:46 2006
@@ -122,9 +122,7 @@
buf.position( 0 );
buf.limit( objectSize + 4 );
- Object answer = buf.getObject( classLoader );
- buf.release();
- return answer;
+ return buf.getObject( classLoader );
}
public boolean readBoolean() throws IOException
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java
Wed Dec 13 00:23:46 2006
@@ -116,12 +116,10 @@
int objectSize = buf.position() - 4;
if( objectSize > maxObjectSize )
{
- buf.release();
throw new IllegalArgumentException( "The encoded object is too
big: " + objectSize + " (> " + maxObjectSize + ')' );
}
out.write( buf.array(), 0, buf.position() );
- buf.release();
}
public void writeBoolean( boolean v ) throws IOException
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/support/SimpleProtocolEncoderOutput.java
Wed Dec 13 00:23:46 2006
@@ -80,7 +80,6 @@
}
newBuf.put( buf );
- buf.release();
}
// Push the new buffer finally.
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
Wed Dec 13 00:23:46 2006
@@ -157,7 +157,6 @@
Context ctx = ( Context ) session.getAttribute( CONTEXT );
if( ctx != null )
{
- ctx.getBuffer().release();
session.removeAttribute( CONTEXT );
}
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
Wed Dec 13 00:23:46 2006
@@ -30,7 +30,6 @@
import org.apache.mina.common.IoFilterAdapter;
import org.apache.mina.common.IoFilterChain;
import org.apache.mina.common.IoSession;
-import org.apache.mina.util.ByteBufferUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -221,14 +220,12 @@
public void messageReceived( NextFilter nextFilter,
IoSession session, Object message )
{
- ByteBufferUtil.acquireIfPossible( message );
fireEvent( nextFilter, session, EventType.RECEIVED, message );
}
public void messageSent( NextFilter nextFilter,
IoSession session, Object message )
{
- ByteBufferUtil.acquireIfPossible( message );
fireEvent( nextFilter, session, EventType.SENT, message );
}
@@ -237,12 +234,10 @@
if( type == EventType.RECEIVED )
{
nextFilter.messageReceived( session, data );
- ByteBufferUtil.releaseIfPossible( data );
}
else if( type == EventType.SENT )
{
nextFilter.messageSent( session, data );
- ByteBufferUtil.releaseIfPossible( data );
}
else if( type == EventType.EXCEPTION )
{
Modified:
mina/trunk/core/src/main/java/org/apache/mina/handler/support/IoSessionInputStream.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/handler/support/IoSessionInputStream.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/handler/support/IoSessionInputStream.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/handler/support/IoSessionInputStream.java
Wed Dec 13 00:23:46 2006
@@ -167,7 +167,6 @@
}
released = true;
- buf.release();
}
public void write( ByteBuffer src )
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
Wed Dec 13 00:23:46 2006
@@ -299,11 +299,6 @@
scheduleRemove( session );
session.getFilterChain().fireExceptionCaught( session, e );
}
- finally
- {
- if( buf != null )
- buf.release();
- }
}
private void notifyIdleness()
@@ -426,18 +421,7 @@
while( ( req = ( WriteRequest ) writeRequestQueue.poll() ) != null )
{
- try
- {
- ( ( ByteBuffer ) req.getMessage() ).release();
- }
- catch( IllegalStateException e )
- {
- session.getFilterChain().fireExceptionCaught( session, e );
- }
- finally
- {
- req.getFuture().setWritten( false );
- }
+ req.getFuture().setWritten( false );
}
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
Wed Dec 13 00:23:46 2006
@@ -380,28 +380,21 @@
{
ByteBuffer readBuf = ByteBuffer.allocate(
( ( DatagramSessionConfig ) getSessionConfig()
).getReceiveBufferSize() );
- try
+
+ SocketAddress remoteAddress = channel.receive( readBuf.buf() );
+ if( remoteAddress != null )
{
- SocketAddress remoteAddress = channel.receive(
- readBuf.buf() );
- if( remoteAddress != null )
- {
- DatagramSessionImpl session =
- ( DatagramSessionImpl ) newSessionWithoutLock(
remoteAddress );
+ DatagramSessionImpl session =
+ ( DatagramSessionImpl ) newSessionWithoutLock( remoteAddress );
- readBuf.flip();
+ readBuf.flip();
- ByteBuffer newBuf = ByteBuffer.allocate( readBuf.limit() );
- newBuf.put( readBuf );
- newBuf.flip();
+ ByteBuffer newBuf = ByteBuffer.allocate( readBuf.limit() );
+ newBuf.put( readBuf );
+ newBuf.flip();
- session.increaseReadBytes( newBuf.remaining() );
- session.getFilterChain().fireMessageReceived( session, newBuf
);
- }
- }
- finally
- {
- readBuf.release();
+ session.increaseReadBytes( newBuf.remaining() );
+ session.getFilterChain().fireMessageReceived( session, newBuf );
}
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
Wed Dec 13 00:23:46 2006
@@ -351,10 +351,6 @@
{
session.getFilterChain().fireExceptionCaught( session, e );
}
- finally
- {
- readBuf.release();
- }
}
private void flushSessions()
Modified:
mina/trunk/core/src/test/java/org/apache/mina/common/ByteBufferTest.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/common/ByteBufferTest.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
--- mina/trunk/core/src/test/java/org/apache/mina/common/ByteBufferTest.java
(original)
+++ mina/trunk/core/src/test/java/org/apache/mina/common/ByteBufferTest.java
Wed Dec 13 00:23:46 2006
@@ -67,54 +67,6 @@
}
}
- public void testRelease() throws Exception
- {
- for( int i = 10; i < 1048576 * 2; i = i * 11 / 10 ) // increase by 10%
- {
- ByteBuffer buf = ByteBuffer.allocate( i );
- Assert.assertEquals( 0, buf.position() );
- Assert.assertEquals( buf.capacity(), buf.remaining() );
- Assert.assertTrue( buf.capacity() >= i );
- Assert.assertTrue( buf.capacity() < i * 2 );
- buf.release();
- }
- }
-
- public void testLeakageDetection() throws Exception
- {
- ByteBuffer buf = ByteBuffer.allocate( 1024 );
- buf.release();
- try
- {
- buf.release();
- Assert.fail( "Releasing a buffer twice should fail." );
- }
- catch( IllegalStateException e )
- {
-
- }
- }
-
- public void testAcquireRelease() throws Exception
- {
- ByteBuffer buf = ByteBuffer.allocate( 1024 );
- buf.acquire();
- buf.release();
- buf.acquire();
- buf.acquire();
- buf.release();
- buf.release();
- buf.release();
- try
- {
- buf.release();
- Assert.fail( "Releasing a buffer twice should fail." );
- }
- catch( IllegalStateException e )
- {
- }
- }
-
public void testAutoExpand() throws Exception
{
ByteBuffer buf = ByteBuffer.allocate( 1 );
@@ -174,19 +126,6 @@
Assert.assertEquals( 3, buf.position() );
}
- public void testPooledProperty() throws Exception
- {
- ByteBuffer.setAllocator( new PooledByteBufferAllocator() );
- ByteBuffer buf = ByteBuffer.allocate( 16 );
- java.nio.ByteBuffer nioBuf = buf.buf();
- buf.release();
- buf = ByteBuffer.allocate( 16 );
- Assert.assertSame( nioBuf, buf.buf() );
- buf.setPooled( false );
- buf.release();
- Assert.assertNotSame( nioBuf, ByteBuffer.allocate( 16 ).buf() );
- }
-
public void testGetString() throws Exception
{
ByteBuffer buf = ByteBuffer.allocate( 16 );
@@ -609,79 +548,13 @@
Assert.assertEquals( 10, buf.capacity() );
}
- public void testPoolExpiration() throws Exception
- {
- ByteBuffer.setAllocator( new PooledByteBufferAllocator() );
- PooledByteBufferAllocator allocator =
- ( PooledByteBufferAllocator ) ByteBuffer.getAllocator();
-
- // Make a buffer pooled.
- ByteBuffer buf = ByteBuffer.allocate( 16 );
- buf.release();
-
- // Let everything flushed.
- allocator.setTimeout( 1 );
- Thread.sleep( 2000 );
-
- // Make sure old buffers are flushed.
- Assert.assertNotSame( buf, ByteBuffer.allocate( 16 ) );
-
- // Make sure new buffers are not flushed.
- allocator.setTimeout( 10 );
- buf = ByteBuffer.allocate( 16 );
- buf.release();
- Thread.sleep( 2000 );
- Assert.assertSame( buf.buf(), ByteBuffer.allocate( 16 ).buf() );
-
- // Return to the default settings
- allocator.setTimeout( 60 );
- }
-
- public void testAllocatorDisposal() throws Exception
- {
- ByteBuffer.setAllocator( new PooledByteBufferAllocator() );
- PooledByteBufferAllocator allocator =
- ( PooledByteBufferAllocator ) ByteBuffer.getAllocator();
-
- // dispose() should fail because the allocator is in use.
- try
- {
- allocator.dispose();
- Assert.fail();
- }
- catch( IllegalStateException e )
- {
- // OK
- }
-
- // Change the allocator.
- ByteBuffer.setAllocator( new PooledByteBufferAllocator() );
-
- // Dispose the old allocator.
- allocator.dispose();
-
- // Allocation request to the disposed allocator should fail.
- try
- {
- allocator.allocate( 16, true );
- Assert.fail();
- }
- catch( IllegalStateException e )
- {
- // OK
- }
- }
-
public void testDuplicate() throws Exception
{
- ByteBuffer.setAllocator( new PooledByteBufferAllocator() );
- java.nio.ByteBuffer nioBuf;
ByteBuffer original;
ByteBuffer duplicate;
// Test if the buffer is duplicated correctly.
original = ByteBuffer.allocate( 16 ).sweep();
- nioBuf = original.buf();
original.position( 4 );
original.limit( 10 );
duplicate = original.duplicate();
@@ -690,58 +563,14 @@
Assert.assertEquals( 10, duplicate.limit() );
Assert.assertEquals( 16, duplicate.capacity() );
Assert.assertNotSame( original.buf(), duplicate.buf() );
+ Assert.assertSame( original.buf().array(), duplicate.buf().array() );
Assert.assertEquals( 127, duplicate.get( 4 ) );
- original.release();
- duplicate.release();
-
- //// Check if pooled correctly.
- original = ByteBuffer.allocate( 16 );
- Assert.assertSame( nioBuf, original.buf() );
- original.release();
-
- // Try to release duplicate first.
- original = ByteBuffer.allocate( 16 );
- duplicate = original.duplicate();
- duplicate.release();
- original.release();
-
- //// Check if pooled correctly.
- original = ByteBuffer.allocate( 16 );
- Assert.assertSame( nioBuf, original.buf() );
- original.release();
// Test a duplicate of a duplicate.
original = ByteBuffer.allocate( 16 );
- duplicate = original.duplicate();
- ByteBuffer anotherDuplicate = duplicate.duplicate();
- anotherDuplicate.release();
- original.release();
- duplicate.release();
- try
- {
- duplicate.release();
- Assert.fail();
- }
- catch( IllegalStateException e )
- {
- // OK
- }
- try
- {
- anotherDuplicate.release();
- Assert.fail();
- }
- catch( IllegalStateException e )
- {
- // OK
- }
-
- //// Check if pooled correctly.
- original = ByteBuffer.allocate( 16 );
- Assert.assertSame( nioBuf, original.buf() );
- original.release();
-
-
+ duplicate = original.duplicate().duplicate();
+ Assert.assertNotSame( original.buf(), duplicate.buf() );
+ Assert.assertSame( original.buf().array(), duplicate.buf().array() );
// Try to expand.
try
@@ -776,8 +605,6 @@
Assert.assertEquals( 6, slice.capacity() );
Assert.assertNotSame( original.buf(), slice.buf() );
Assert.assertEquals( 127, slice.get( 0 ) );
- original.release();
- slice.release();
}
public void testReadOnlyBuffer() throws Exception
@@ -796,8 +623,6 @@
Assert.assertEquals( 16, duplicate.capacity() );
Assert.assertNotSame( original.buf(), duplicate.buf() );
Assert.assertEquals( 127, duplicate.get( 4 ) );
- original.release();
- duplicate.release();
// Try to expand.
try
Modified:
mina/trunk/filter-codec-netty/src/main/java/org/apache/mina/filter/codec/netty/NettyEncoder.java
URL:
http://svn.apache.org/viewvc/mina/trunk/filter-codec-netty/src/main/java/org/apache/mina/filter/codec/netty/NettyEncoder.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/filter-codec-netty/src/main/java/org/apache/mina/filter/codec/netty/NettyEncoder.java
(original)
+++
mina/trunk/filter-codec-netty/src/main/java/org/apache/mina/filter/codec/netty/NettyEncoder.java
Wed Dec 13 00:23:46 2006
@@ -69,10 +69,6 @@
{
out.write( buf );
}
- else
- {
- buf.release();
- }
}
}
}
Modified:
mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/CompressionFilter.java
URL:
http://svn.apache.org/viewvc/mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/CompressionFilter.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/CompressionFilter.java
(original)
+++
mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/CompressionFilter.java
Wed Dec 13 00:23:46 2006
@@ -164,7 +164,6 @@
ByteBuffer inBuffer = ( ByteBuffer ) message;
ByteBuffer outBuffer = inflater.inflate( inBuffer );
- inBuffer.release();
nextFilter.messageReceived( session, outBuffer );
}
@@ -196,7 +195,6 @@
ByteBuffer inBuffer = ( ByteBuffer ) writeRequest.getMessage();
ByteBuffer outBuf = deflater.deflate( inBuffer );
- inBuffer.release();
nextFilter.filterWrite( session, new WriteRequest( outBuf, writeRequest
.getFuture() ) );
}
Modified:
mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/support/Zlib.java
URL:
http://svn.apache.org/viewvc/mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/support/Zlib.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/support/Zlib.java
(original)
+++
mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/support/Zlib.java
Wed Dec 13 00:23:46 2006
@@ -129,7 +129,6 @@
break;
default:
// unknown error
- outBuffer.release();
outBuffer = null;
if( zStream.msg == null )
throw new IOException( "Unknown error. Error code : " +
retval );
Modified:
mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java
URL:
http://svn.apache.org/viewvc/mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
--- mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java
(original)
+++ mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java
Wed Dec 13 00:23:46 2006
@@ -438,7 +438,6 @@
if( message instanceof EncryptedBuffer )
{
EncryptedBuffer buf = ( EncryptedBuffer ) message;
- buf.release();
nextFilter.messageSent( session, buf.originalBuffer );
}
else
Modified:
mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLByteBufferPool.java
URL:
http://svn.apache.org/viewvc/mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLByteBufferPool.java?view=diff&rev=486545&r1=486544&r2=486545
==============================================================================
---
mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLByteBufferPool.java
(original)
+++
mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLByteBufferPool.java
Wed Dec 13 00:23:46 2006
@@ -136,7 +136,7 @@
public static void release( ByteBuffer buf )
{
// Sweep buffer for security.
- org.apache.mina.common.ByteBuffer.wrap( buf ).sweep().release();
+ org.apache.mina.common.ByteBuffer.wrap( buf ).sweep();
int stackIndex =getBufferStackIndex( buf.capacity() );
if ( stackIndex >= PACKET_BUFFER_INDEX ) {