Author: elecharny Date: Fri Feb 12 18:21:39 2010 New Revision: 909546 URL: http://svn.apache.org/viewvc?rev=909546&view=rev Log: emoved all references to the non-threadsafe circularQueue all over the code
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/buffer/CachedBufferAllocator.java mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java mina/trunk/core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java mina/trunk/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java mina/trunk/core/src/test/java/org/apache/mina/filter/codec/CumulativeProtocolDecoderTest.java mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java Modified: mina/trunk/core/src/main/java/org/apache/mina/core/buffer/CachedBufferAllocator.java URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/buffer/CachedBufferAllocator.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/core/src/main/java/org/apache/mina/core/buffer/CachedBufferAllocator.java (original) +++ mina/trunk/core/src/main/java/org/apache/mina/core/buffer/CachedBufferAllocator.java Fri Feb 12 18:21:39 2010 @@ -24,8 +24,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Queue; - -import org.apache.mina.util.CircularQueue; +import java.util.concurrent.ConcurrentLinkedQueue; /** * An {...@link IoBufferAllocator} that caches the buffers which are likely to @@ -136,11 +135,11 @@ int poolSize = maxPoolSize == 0? DEFAULT_MAX_POOL_SIZE : maxPoolSize; for (int i = 0; i < 31; i ++) { - poolMap.put(1 << i, new CircularQueue<CachedBuffer>(poolSize)); + poolMap.put(1 << i, new ConcurrentLinkedQueue<CachedBuffer>()); } - poolMap.put(0, new CircularQueue<CachedBuffer>(poolSize)); - poolMap.put(Integer.MAX_VALUE, new CircularQueue<CachedBuffer>(poolSize)); + poolMap.put(0, new ConcurrentLinkedQueue<CachedBuffer>()); + poolMap.put(Integer.MAX_VALUE, new ConcurrentLinkedQueue<CachedBuffer>()); return poolMap; } Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java (original) +++ mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java Fri Feb 12 18:21:39 2010 @@ -27,6 +27,7 @@ import java.util.Iterator; import java.util.Queue; import java.util.Set; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -53,7 +54,6 @@ import org.apache.mina.core.write.WriteRequestQueue; import org.apache.mina.core.write.WriteTimeoutException; import org.apache.mina.core.write.WriteToClosedSessionException; -import org.apache.mina.util.CircularQueue; import org.apache.mina.util.ExceptionMonitor; @@ -332,7 +332,7 @@ Queue<ReadFuture> readyReadFutures = (Queue<ReadFuture>) getAttribute(READY_READ_FUTURES_KEY); if (readyReadFutures == null) { - readyReadFutures = new CircularQueue<ReadFuture>(); + readyReadFutures = new ConcurrentLinkedQueue<ReadFuture>(); Queue<ReadFuture> oldReadyReadFutures = (Queue<ReadFuture>) setAttributeIfAbsent( @@ -351,7 +351,7 @@ Queue<ReadFuture> waitingReadyReadFutures = (Queue<ReadFuture>) getAttribute(WAITING_READ_FUTURES_KEY); if (waitingReadyReadFutures == null) { - waitingReadyReadFutures = new CircularQueue<ReadFuture>(); + waitingReadyReadFutures = new ConcurrentLinkedQueue<ReadFuture>(); Queue<ReadFuture> oldWaitingReadyReadFutures = (Queue<ReadFuture>) setAttributeIfAbsent( Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java (original) +++ mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java Fri Feb 12 18:21:39 2010 @@ -25,15 +25,15 @@ import java.util.Map; import java.util.Queue; import java.util.Set; +import java.util.concurrent.ConcurrentLinkedQueue; import org.apache.mina.core.write.WriteRequest; import org.apache.mina.core.write.WriteRequestQueue; -import org.apache.mina.util.CircularQueue; /** * The default {...@link IoSessionDataStructureFactory} implementation * that creates a new {...@link HashMap}-based {...@link IoSessionAttributeMap} - * instance and a new synchronized {...@link CircularQueue} instance per + * instance and a new synchronized {...@link ConcurrentLinkedQueue} instance per * {...@link IoSession}. * * @author <a href="http://mina.apache.org">Apache MINA Project</a> @@ -166,7 +166,7 @@ private static class DefaultWriteRequestQueue implements WriteRequestQueue { /** A queue to store incoming write requests */ - private final Queue<WriteRequest> q = new CircularQueue<WriteRequest>(16); + private final Queue<WriteRequest> q = new ConcurrentLinkedQueue<WriteRequest>(); /** * Default constructor Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java (original) +++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java Fri Feb 12 18:21:39 2010 @@ -20,8 +20,7 @@ package org.apache.mina.filter.codec; import java.util.Queue; - -import org.apache.mina.util.CircularQueue; +import java.util.concurrent.ConcurrentLinkedQueue; /** * A {...@link ProtocolDecoderOutput} based on queue. @@ -29,7 +28,7 @@ * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public abstract class AbstractProtocolDecoderOutput implements ProtocolDecoderOutput { - private final Queue<Object> messageQueue = new CircularQueue<Object>(); + private final Queue<Object> messageQueue = new ConcurrentLinkedQueue<Object>(); public AbstractProtocolDecoderOutput() { // Do nothing Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java (original) +++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java Fri Feb 12 18:21:39 2010 @@ -20,12 +20,12 @@ package org.apache.mina.filter.codec.statemachine; import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolDecoder; import org.apache.mina.filter.codec.ProtocolDecoderOutput; -import org.apache.mina.util.CircularQueue; /** * {...@link ProtocolDecoder} which uses a {...@link DecodingState} to decode data. @@ -39,7 +39,7 @@ */ public class DecodingStateProtocolDecoder implements ProtocolDecoder { private final DecodingState state; - private final Queue<IoBuffer> undecodedBuffers = new CircularQueue<IoBuffer>(); + private final Queue<IoBuffer> undecodedBuffers = new ConcurrentLinkedQueue<IoBuffer>(); private IoSession session; /** Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java (original) +++ mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java Fri Feb 12 18:21:39 2010 @@ -40,7 +40,6 @@ import org.apache.mina.core.session.IoSession; import org.apache.mina.core.write.DefaultWriteRequest; import org.apache.mina.core.write.WriteRequest; -import org.apache.mina.util.CircularQueue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -68,7 +67,7 @@ /** The current session */ private final IoSession session; - private final Queue<IoFilterEvent> preHandshakeEventQueue = new CircularQueue<IoFilterEvent>(); + private final Queue<IoFilterEvent> preHandshakeEventQueue = new ConcurrentLinkedQueue<IoFilterEvent>(); private final Queue<IoFilterEvent> filterWriteEventQueue = new ConcurrentLinkedQueue<IoFilterEvent>(); /** A queue used to stack all the incoming data until the SSL session is established */ Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java (original) +++ mina/trunk/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java Fri Feb 12 18:21:39 2010 @@ -21,6 +21,7 @@ import java.io.IOException; import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.filterchain.IoFilterAdapter; @@ -29,7 +30,6 @@ import org.apache.mina.core.session.IoSession; import org.apache.mina.core.write.DefaultWriteRequest; import org.apache.mina.core.write.WriteRequest; -import org.apache.mina.util.CircularQueue; /** * TODO Add documentation @@ -70,7 +70,7 @@ if (session.getAttribute(CURRENT_STREAM) != null) { Queue<WriteRequest> queue = getWriteRequestQueue(session); if (queue == null) { - queue = new CircularQueue<WriteRequest>(); + queue = new ConcurrentLinkedQueue<WriteRequest>(); session.setAttribute(WRITE_REQUEST_QUEUE, queue); } queue.add(writeRequest); Modified: mina/trunk/core/src/test/java/org/apache/mina/filter/codec/CumulativeProtocolDecoderTest.java URL: http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/filter/codec/CumulativeProtocolDecoderTest.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/core/src/test/java/org/apache/mina/filter/codec/CumulativeProtocolDecoderTest.java (original) +++ mina/trunk/core/src/test/java/org/apache/mina/filter/codec/CumulativeProtocolDecoderTest.java Fri Feb 12 18:21:39 2010 @@ -19,6 +19,11 @@ */ package org.apache.mina.filter.codec; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + import java.net.SocketAddress; import java.util.ArrayList; import java.util.List; @@ -30,10 +35,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; -import static org.junit.Assert.assertTrue; /** @@ -97,10 +98,8 @@ List<Object> expected = new ArrayList<Object>(); for (int i = 0; i < 4; i++) { - expected.add(new Integer(i)); + assertTrue( session.getDecoderOutputQueue().contains(i)); } - - assertEquals(expected, session.getDecoderOutputQueue()); } @Test Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java (original) +++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java Fri Feb 12 18:21:39 2010 @@ -23,8 +23,9 @@ import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Iterator; -import java.util.List; import java.util.Map; +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.Executor; import org.apache.mina.core.RuntimeIoException; @@ -32,7 +33,6 @@ import org.apache.mina.core.file.FileRegion; import org.apache.mina.core.polling.AbstractPollingIoProcessor; import org.apache.mina.core.session.SessionState; -import org.apache.mina.util.CircularQueue; import org.apache.tomcat.jni.File; import org.apache.tomcat.jni.Poll; import org.apache.tomcat.jni.Pool; @@ -58,7 +58,7 @@ private final long bufferPool; // memory pool private final long pollset; // socket poller private final long[] polledSockets = new long[POLLSET_SIZE << 1]; - private final List<AprSession> polledSessions = new CircularQueue<AprSession>(POLLSET_SIZE); + private final Queue<AprSession> polledSessions = new ConcurrentLinkedQueue<AprSession>(); /** * Create a new instance of {...@link AprIoProcessor} with a given Exector for Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java (original) +++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java Fri Feb 12 18:21:39 2010 @@ -23,7 +23,8 @@ import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.Iterator; -import java.util.List; +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.Executor; import org.apache.mina.core.RuntimeIoException; @@ -36,7 +37,6 @@ import org.apache.mina.transport.socket.DefaultSocketSessionConfig; import org.apache.mina.transport.socket.SocketAcceptor; import org.apache.mina.transport.socket.SocketSessionConfig; -import org.apache.mina.util.CircularQueue; import org.apache.tomcat.jni.Address; import org.apache.tomcat.jni.Poll; import org.apache.tomcat.jni.Pool; @@ -67,8 +67,8 @@ private volatile long pool; private volatile long pollset; // socket poller private final long[] polledSockets = new long[POLLSET_SIZE << 1]; - private final List<Long> polledHandles = - new CircularQueue<Long>(POLLSET_SIZE); + private final Queue<Long> polledHandles = + new ConcurrentLinkedQueue<Long>(); /** * Constructor for {...@link AprSocketAcceptor} using default parameters (multiple thread model). Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java?rev=909546&r1=909545&r2=909546&view=diff ============================================================================== --- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java (original) +++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java Fri Feb 12 18:21:39 2010 @@ -26,9 +26,10 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; -import java.util.List; import java.util.Map; +import java.util.Queue; import java.util.Set; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.Executor; import org.apache.mina.core.RuntimeIoException; @@ -41,7 +42,6 @@ import org.apache.mina.transport.socket.DefaultSocketSessionConfig; import org.apache.mina.transport.socket.SocketConnector; import org.apache.mina.transport.socket.SocketSessionConfig; -import org.apache.mina.util.CircularQueue; import org.apache.tomcat.jni.Address; import org.apache.tomcat.jni.Poll; import org.apache.tomcat.jni.Pool; @@ -73,7 +73,7 @@ private volatile long pool; private volatile long pollset; // socket poller private final long[] polledSockets = new long[POLLSET_SIZE << 1]; - private final List<Long> polledHandles = new CircularQueue<Long>(POLLSET_SIZE); + private final Queue<Long> polledHandles = new ConcurrentLinkedQueue<Long>(); private final Set<Long> failedHandles = new HashSet<Long>(POLLSET_SIZE); private volatile ByteBuffer dummyBuffer;