You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2008/06/24 11:55:53 UTC

svn commit: r671108 [1/6] - in /mina/trunk: core/src/main/java/org/apache/mina/common/ core/src/main/java/org/apache/mina/common/buffer/ core/src/main/java/org/apache/mina/common/file/ core/src/main/java/org/apache/mina/common/filterchain/ core/src/mai...

Author: elecharny
Date: Tue Jun 24 02:55:42 2008
New Revision: 671108

URL: http://svn.apache.org/viewvc?rev=671108&view=rev
Log:
o Divided the common package in many sub-packages, as explicited on the dev mailing-list.
o Modified the code accordingly (imports)
o Changed some methods to make them public, in order to get them visible from other packages


Added:
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/AbstractIoBuffer.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoBuffer.java
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/BufferDataException.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/BufferDataException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/CachedBufferAllocator.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/CachedBufferAllocator.java
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBuffer.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoBuffer.java
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferAllocator.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferAllocator.java
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferHexDumper.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferHexDumper.java
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferWrapper.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferWrapper.java
    mina/trunk/core/src/main/java/org/apache/mina/common/buffer/SimpleBufferAllocator.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/SimpleBufferAllocator.java
    mina/trunk/core/src/main/java/org/apache/mina/common/file/
    mina/trunk/core/src/main/java/org/apache/mina/common/file/DefaultFileRegion.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultFileRegion.java
    mina/trunk/core/src/main/java/org/apache/mina/common/file/FileRegion.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/FileRegion.java
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/DefaultIoFilterChain.java
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/DefaultIoFilterChainBuilder.java
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/IoFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/IoFilterAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/IoFilterChain.java
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/IoFilterChainBuilder.java
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/IoFilterEvent.java
    mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/IoFilterLifeCycleException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/
    mina/trunk/core/src/main/java/org/apache/mina/common/future/CloseFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/CloseFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/CompositeIoFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/CompositeIoFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/ConnectFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/ConnectFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/DefaultCloseFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultCloseFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/DefaultConnectFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultConnectFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/DefaultIoFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/DefaultReadFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultReadFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/DefaultWriteFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultWriteFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/IoFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/IoFutureListener.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoFutureListener.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/ReadFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/ReadFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/future/WriteFuture.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/WriteFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/polling/
    mina/trunk/core/src/main/java/org/apache/mina/common/polling/AbstractPollingConnectionlessIoAcceptor.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingConnectionlessIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/polling/AbstractPollingIoAcceptor.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/polling/AbstractPollingIoConnector.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/polling/AbstractPollingIoProcessor.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoProcessor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/
    mina/trunk/core/src/main/java/org/apache/mina/common/service/AbstractIoAcceptor.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/AbstractIoConnector.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/AbstractIoService.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/DefaultTransportMetadata.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultTransportMetadata.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/IoAcceptor.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/IoConnector.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/IoHandler.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/IoHandlerAdapter.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoHandlerAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/IoProcessor.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoProcessor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/IoService.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/IoServiceListener.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListener.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/IoServiceListenerSupport.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/SimpleIoProcessorPool.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/SimpleIoProcessorPool.java
    mina/trunk/core/src/main/java/org/apache/mina/common/service/TransportMetadata.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/TransportMetadata.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/
    mina/trunk/core/src/main/java/org/apache/mina/common/session/AbstractIoSession.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/AbstractIoSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/AttributeKey.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AttributeKey.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/DefaultIoSessionDataStructureFactory.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoSessionDataStructureFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/DummySession.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/ExpiringSessionRecycler.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/ExpiringSessionRecycler.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IdleStatus.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatus.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IdleStatusChecker.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoEvent.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoEventType.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoSession.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoSessionAttributeMap.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionAttributeMap.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoSessionDataStructureFactory.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionDataStructureFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoSessionInitializationException.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializationException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoSessionInitializer.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/IoSessionRecycler.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionRecycler.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/TrafficMask.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/TrafficMask.java
    mina/trunk/core/src/main/java/org/apache/mina/common/session/UnknownMessageTypeException.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/UnknownMessageTypeException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/write/
    mina/trunk/core/src/main/java/org/apache/mina/common/write/DefaultWriteRequest.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultWriteRequest.java
    mina/trunk/core/src/main/java/org/apache/mina/common/write/NothingWrittenException.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/NothingWrittenException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/write/WriteException.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/WriteException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/write/WriteRequest.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/WriteRequest.java
    mina/trunk/core/src/main/java/org/apache/mina/common/write/WriteRequestQueue.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/WriteRequestQueue.java
    mina/trunk/core/src/main/java/org/apache/mina/common/write/WriteRequestWrapper.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/WriteRequestWrapper.java
    mina/trunk/core/src/main/java/org/apache/mina/common/write/WriteTimeoutException.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/WriteTimeoutException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/write/WriteToClosedSessionException.java
      - copied, changed from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/WriteToClosedSessionException.java
Removed:
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoBuffer.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingConnectionlessIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoProcessor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AttributeKey.java
    mina/trunk/core/src/main/java/org/apache/mina/common/BufferDataException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/CachedBufferAllocator.java
    mina/trunk/core/src/main/java/org/apache/mina/common/CloseFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/CompositeIoFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/ConnectFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultCloseFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultConnectFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultFileRegion.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChainBuilder.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoSessionDataStructureFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultReadFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultTransportMetadata.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultWriteFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultWriteRequest.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/ExpiringSessionRecycler.java
    mina/trunk/core/src/main/java/org/apache/mina/common/FileRegion.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatus.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoBuffer.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferAllocator.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferHexDumper.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferWrapper.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoEvent.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoEventType.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterChain.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterChainBuilder.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterEvent.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterLifeCycleException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFutureListener.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoHandlerAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoProcessor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListener.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionAttributeMap.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionDataStructureFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializationException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionRecycler.java
    mina/trunk/core/src/main/java/org/apache/mina/common/NothingWrittenException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/ReadFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/SimpleBufferAllocator.java
    mina/trunk/core/src/main/java/org/apache/mina/common/SimpleIoProcessorPool.java
    mina/trunk/core/src/main/java/org/apache/mina/common/TrafficMask.java
    mina/trunk/core/src/main/java/org/apache/mina/common/TransportMetadata.java
    mina/trunk/core/src/main/java/org/apache/mina/common/UnknownMessageTypeException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/WriteException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/WriteFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/WriteRequest.java
    mina/trunk/core/src/main/java/org/apache/mina/common/WriteRequestQueue.java
    mina/trunk/core/src/main/java/org/apache/mina/common/WriteRequestWrapper.java
    mina/trunk/core/src/main/java/org/apache/mina/common/WriteTimeoutException.java
    mina/trunk/core/src/main/java/org/apache/mina/common/WriteToClosedSessionException.java
Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultExceptionMonitor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoUtil.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.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/ProtocolCodecFactory.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/ProtocolCodecSession.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolDecoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolDecoderAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolDecoderException.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolEncoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolEncoderAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolEncoderOutput.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/RecoverableProtocolDecoderException.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolDecoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolEncoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolEncoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/MessageDecoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/MessageDecoderAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/MessageDecoderResult.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringCodecFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringDecoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationCodecFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationDecoder.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/statemachine/ConsumeToCrLfDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToDynamicTerminatorDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToEndOfSessionDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToTerminatorDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/CrLfDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateMachine.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/codec/statemachine/FixedLengthDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/SingleByteDecodingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/statemachine/SkippingState.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineCodecFactory.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/codec/textline/TextLineEncoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/errorgenerating/ErrorGeneratingFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/DefaultIoEventSizeEstimator.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/IoEventQueueHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/IoEventQueueThrottle.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/IoEventSizeEstimator.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/OrderedThreadPoolExecutor.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveMessageFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveRequestTimeoutHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/logging/MdcInjectionFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/statistic/ProfilerTimerFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/stream/FileRegionWriteFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/stream/StreamWriteFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/util/SessionAttributeInitializingFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/util/WriteRequestFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/chain/ChainedIoHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/chain/IoHandlerChain.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/chain/IoHandlerCommand.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/demux/DemuxingIoHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/demux/ExceptionHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/demux/MessageHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerDelegate.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/multiton/SingleSessionIoHandlerFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/stream/IoSessionInputStream.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/stream/IoSessionOutputStream.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/AbstractDatagramSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/AbstractSocketSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DatagramAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DatagramConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DatagramSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DefaultSocketSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/SocketAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/SocketConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/SocketSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioProcessor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSession.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipe.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeFilterChain.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionConfig.java
    mina/trunk/core/src/test/java/org/apache/mina/common/DefaultIoFilterChainBuilderTest.java
    mina/trunk/core/src/test/java/org/apache/mina/common/FutureTest.java
    mina/trunk/core/src/test/java/org/apache/mina/common/IoBufferTest.java
    mina/trunk/core/src/test/java/org/apache/mina/common/IoFilterChainTest.java
    mina/trunk/core/src/test/java/org/apache/mina/common/IoServiceListenerSupportTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/codec/CumulativeProtocolDecoderTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/codec/serialization/ObjectSerializationTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineDecoderTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/executor/ExecutorFilterRegressionTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/firewall/ConnectionThrottleFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/keepalive/KeepAliveFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/reqres/RequestResponseFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/stream/AbstractStreamWriteFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/stream/FileRegionWriteFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/util/WrappingFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/handler/chain/ChainedIoHandlerTest.java
    mina/trunk/core/src/test/java/org/apache/mina/handler/demux/DemuxingIoHandlerTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractFileRegionTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractTrafficControlTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramBindTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramConfigTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramConnectorTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramRecyclerTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramTrafficControlTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/NioFileRegionTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/SocketBindTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/SocketConnectorTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/SocketTrafficControlTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeBindTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeEventOrderTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeSessionCrossCommunicationTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeTrafficControlTest.java
    mina/trunk/core/src/test/java/org/apache/mina/util/IoFilterImpl.java
    mina/trunk/example/src/main/java/org/apache/mina/example/chat/ChatProtocolHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/chat/Main.java
    mina/trunk/example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
    mina/trunk/example/src/main/java/org/apache/mina/example/chat/client/SwingChatClientHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/echoserver/EchoProtocolHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/echoserver/Main.java
    mina/trunk/example/src/main/java/org/apache/mina/example/gettingstarted/timeserver/MinaTimeServer.java
    mina/trunk/example/src/main/java/org/apache/mina/example/gettingstarted/timeserver/TimeServerHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step1/client/ImageClient.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step1/codec/ImageCodecFactory.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step1/codec/ImageRequestDecoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step1/codec/ImageRequestEncoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step1/codec/ImageResponseDecoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step1/codec/ImageResponseEncoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step1/server/ImageServerIoHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step2/server/ImageServer.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step3/server/ImageServer.java
    mina/trunk/example/src/main/java/org/apache/mina/example/imagine/step3/server/ImageServerIoHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/netcat/Main.java
    mina/trunk/example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/proxy/ClientToProxyIoHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/proxy/Main.java
    mina/trunk/example/src/main/java/org/apache/mina/example/reverser/ReverseProtocolHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/Client.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ClientSessionHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/codec/AbstractMessageDecoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/codec/AbstractMessageEncoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/codec/AddMessageDecoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/codec/AddMessageEncoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/codec/ResultMessageDecoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/codec/ResultMessageEncoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/tapedeck/AuthenticationHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/tapedeck/CommandDecoder.java
    mina/trunk/example/src/main/java/org/apache/mina/example/tapedeck/Main.java
    mina/trunk/example/src/main/java/org/apache/mina/example/tapedeck/TapeDeckServer.java
    mina/trunk/example/src/main/java/org/apache/mina/example/tennis/Main.java
    mina/trunk/example/src/main/java/org/apache/mina/example/tennis/TennisPlayer.java
    mina/trunk/example/src/main/java/org/apache/mina/example/udp/MemoryMonitor.java
    mina/trunk/example/src/main/java/org/apache/mina/example/udp/MemoryMonitorHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/udp/client/MemMonClient.java
    mina/trunk/example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
    mina/trunk/example/src/test/java/org/apache/mina/example/chat/SpringMainTest.java
    mina/trunk/example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
    mina/trunk/example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
    mina/trunk/example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
    mina/trunk/filter-codec-netty/src/main/java/org/apache/mina/filter/codec/netty/NettyCodecFactory.java
    mina/trunk/filter-codec-netty/src/main/java/org/apache/mina/filter/codec/netty/NettyDecoder.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/compression/CompressionFilter.java
    mina/trunk/filter-compression/src/main/java/org/apache/mina/filter/compression/Zlib.java
    mina/trunk/filter-compression/src/test/java/org/apache/mina/filter/compression/CompressionFilterTest.java
    mina/trunk/filter-compression/src/test/java/org/apache/mina/filter/compression/ZlibTest.java
    mina/trunk/integration-beans/src/main/java/org/apache/mina/integration/beans/TrafficMaskEditor.java
    mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoFilterMBean.java
    mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoServiceMBean.java
    mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionMBean.java
    mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/ObjectMBean.java
    mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoFilterPropertyAccessor.java
    mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoServicePropertyAccessor.java
    mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoSessionFinder.java
    mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoSessionPropertyAccessor.java
    mina/trunk/statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransition.java
    mina/trunk/statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransitions.java
    mina/trunk/statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransition.java
    mina/trunk/statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransitions.java
    mina/trunk/statemachine/src/main/java/org/apache/mina/statemachine/context/IoSessionStateContextLookup.java
    mina/trunk/statemachine/src/main/java/org/apache/mina/statemachine/event/IoFilterEvents.java
    mina/trunk/statemachine/src/main/java/org/apache/mina/statemachine/event/IoHandlerEvents.java
    mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprDatagramSession.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/AprSession.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
    mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketSession.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/DefaultExceptionMonitor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DefaultExceptionMonitor.java?rev=671108&r1=671107&r2=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/DefaultExceptionMonitor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/DefaultExceptionMonitor.java Tue Jun 24 02:55:42 2008
@@ -19,6 +19,7 @@
  */
 package org.apache.mina.common;
 
+import org.apache.mina.common.service.IoService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoUtil.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoUtil.java?rev=671108&r1=671107&r2=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoUtil.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoUtil.java Tue Jun 24 02:55:42 2008
@@ -25,6 +25,11 @@
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.mina.common.buffer.IoBuffer;
+import org.apache.mina.common.future.IoFuture;
+import org.apache.mina.common.future.WriteFuture;
+import org.apache.mina.common.session.IoSession;
+
 /**
  * A utility class that provides various convenience methods related with
  * {@link IoSession} and {@link IoFuture}.

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/buffer/AbstractIoBuffer.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoBuffer.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/buffer/AbstractIoBuffer.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/buffer/AbstractIoBuffer.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoBuffer.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoBuffer.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/buffer/AbstractIoBuffer.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,7 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.buffer;
 
 import java.io.EOFException;
 import java.io.IOException;
@@ -45,6 +45,7 @@
 import java.util.Set;
 
 
+
 /**
  * A base implementation of {@link IoBuffer}.  This implementation
  * assumes that {@link IoBuffer#buf()} always returns a correct NIO

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/buffer/BufferDataException.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/BufferDataException.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/buffer/BufferDataException.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/buffer/BufferDataException.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/BufferDataException.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/BufferDataException.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/buffer/BufferDataException.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,7 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.buffer;
 
 /**
  * A {@link RuntimeException} which is thrown when the data the {@link IoBuffer}

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/buffer/CachedBufferAllocator.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/CachedBufferAllocator.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/buffer/CachedBufferAllocator.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/buffer/CachedBufferAllocator.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/CachedBufferAllocator.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/CachedBufferAllocator.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/buffer/CachedBufferAllocator.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,7 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.buffer;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBuffer.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoBuffer.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBuffer.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBuffer.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/IoBuffer.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoBuffer.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBuffer.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,7 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.buffer;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -38,6 +38,8 @@
 import java.util.EnumSet;
 import java.util.Set;
 
+import org.apache.mina.common.session.IoSession;
+
 /**
  * A byte buffer used by MINA applications.
  * <p>

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferAllocator.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferAllocator.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferAllocator.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferAllocator.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferAllocator.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferAllocator.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferAllocator.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,7 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.buffer;
 
 import java.nio.ByteBuffer;
 

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferHexDumper.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferHexDumper.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferHexDumper.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferHexDumper.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferHexDumper.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferHexDumper.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferHexDumper.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,8 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.buffer;
+
 
 
 /**

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferWrapper.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferWrapper.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferWrapper.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferWrapper.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferWrapper.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoBufferWrapper.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/buffer/IoBufferWrapper.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,7 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.buffer;
 
 import java.io.FilterOutputStream;
 import java.io.InputStream;

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/buffer/SimpleBufferAllocator.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/SimpleBufferAllocator.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/buffer/SimpleBufferAllocator.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/buffer/SimpleBufferAllocator.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/SimpleBufferAllocator.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/SimpleBufferAllocator.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/buffer/SimpleBufferAllocator.java Tue Jun 24 02:55:42 2008
@@ -17,12 +17,13 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.buffer;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
 
+
 /**
  * A simplistic {@link IoBufferAllocator} which simply allocates a new
  * buffer every time.

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/file/DefaultFileRegion.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/DefaultFileRegion.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/file/DefaultFileRegion.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/file/DefaultFileRegion.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/DefaultFileRegion.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/DefaultFileRegion.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/file/DefaultFileRegion.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,7 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.file;
 
 import java.io.IOException;
 import java.nio.channels.FileChannel;

Copied: mina/trunk/core/src/main/java/org/apache/mina/common/file/FileRegion.java (from r669829, mina/trunk/core/src/main/java/org/apache/mina/common/FileRegion.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/file/FileRegion.java?p2=mina/trunk/core/src/main/java/org/apache/mina/common/file/FileRegion.java&p1=mina/trunk/core/src/main/java/org/apache/mina/common/FileRegion.java&r1=669829&r2=671108&rev=671108&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/FileRegion.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/file/FileRegion.java Tue Jun 24 02:55:42 2008
@@ -17,7 +17,7 @@
  *  under the License.
  *
  */
-package org.apache.mina.common;
+package org.apache.mina.common.file;
 
 import java.nio.channels.FileChannel;
 

Added: mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/DefaultIoFilterChain.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/DefaultIoFilterChain.java?rev=671108&view=auto
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/DefaultIoFilterChain.java (added)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/filterchain/DefaultIoFilterChain.java Tue Jun 24 02:55:42 2008
@@ -0,0 +1,901 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.mina.common.filterchain;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.mina.common.session.TrafficMask;
+import org.apache.mina.common.buffer.IoBuffer;
+import org.apache.mina.common.filterchain.IoFilter.NextFilter;
+import org.apache.mina.common.future.ConnectFuture;
+import org.apache.mina.common.future.IoFuture;
+import org.apache.mina.common.session.AbstractIoSession;
+import org.apache.mina.common.session.AttributeKey;
+import org.apache.mina.common.session.IdleStatus;
+import org.apache.mina.common.session.IoSession;
+import org.apache.mina.common.write.WriteRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A default implementation of {@link IoFilterChain} that provides
+ * all operations for developers who want to implement their own
+ * transport layer once used with {@link AbstractIoSession}.
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ * @version $Rev: 637741 $, $Date: 2008-03-17 07:39:20 +0100 (Mon, 17 Mar 2008) $
+ */
+public class DefaultIoFilterChain implements IoFilterChain {
+    /**
+     * A session attribute that stores an {@link IoFuture} related with
+     * the {@link IoSession}.  {@link DefaultIoFilterChain} clears this
+     * attribute and notifies the future when {@link #fireSessionCreated()}
+     * or {@link #fireExceptionCaught(Throwable)} is invoked.
+     */
+    public static final AttributeKey SESSION_CREATED_FUTURE = new AttributeKey(DefaultIoFilterChain.class, "connectFuture");
+
+    private final AbstractIoSession session;
+
+    private final Map<String, Entry> name2entry = new HashMap<String, Entry>();
+
+    private final EntryImpl head;
+
+    private final EntryImpl tail;
+
+    private final Logger logger = LoggerFactory.getLogger(getClass());
+
+    public DefaultIoFilterChain(AbstractIoSession session) {
+        if (session == null) {
+            throw new NullPointerException("session");
+        }
+
+        this.session = session;
+        head = new EntryImpl(null, null, "head", new HeadFilter());
+        tail = new EntryImpl(head, null, "tail", new TailFilter());
+        head.nextEntry = tail;
+    }
+
+    public IoSession getSession() {
+        return session;
+    }
+
+    public Entry getEntry(String name) {
+        Entry e = name2entry.get(name);
+        if (e == null) {
+            return null;
+        }
+        return e;
+    }
+
+    public Entry getEntry(IoFilter filter) {
+        EntryImpl e = head.nextEntry;
+        while (e != tail) {
+            if (e.getFilter() == filter) {
+                return e;
+            }
+            e = e.nextEntry;
+        }
+        return null;
+    }
+
+    public Entry getEntry(Class<? extends IoFilter> filterType) {
+        EntryImpl e = head.nextEntry;
+        while (e != tail) {
+            if (filterType.isAssignableFrom(e.getFilter().getClass())) {
+                return e;
+            }
+            e = e.nextEntry;
+        }
+        return null;
+    }
+
+    public IoFilter get(String name) {
+        Entry e = getEntry(name);
+        if (e == null) {
+            return null;
+        }
+
+        return e.getFilter();
+    }
+
+    public IoFilter get(Class<? extends IoFilter> filterType) {
+        Entry e = getEntry(filterType);
+        if (e == null) {
+            return null;
+        }
+
+        return e.getFilter();
+    }
+
+    public NextFilter getNextFilter(String name) {
+        Entry e = getEntry(name);
+        if (e == null) {
+            return null;
+        }
+
+        return e.getNextFilter();
+    }
+
+    public NextFilter getNextFilter(IoFilter filter) {
+        Entry e = getEntry(filter);
+        if (e == null) {
+            return null;
+        }
+
+        return e.getNextFilter();
+    }
+
+    public NextFilter getNextFilter(Class<? extends IoFilter> filterType) {
+        Entry e = getEntry(filterType);
+        if (e == null) {
+            return null;
+        }
+
+        return e.getNextFilter();
+    }
+
+    public synchronized void addFirst(String name, IoFilter filter) {
+        checkAddable(name);
+        register(head, name, filter);
+    }
+
+    public synchronized void addLast(String name, IoFilter filter) {
+        checkAddable(name);
+        register(tail.prevEntry, name, filter);
+    }
+
+    public synchronized void addBefore(String baseName, String name,
+            IoFilter filter) {
+        EntryImpl baseEntry = checkOldName(baseName);
+        checkAddable(name);
+        register(baseEntry.prevEntry, name, filter);
+    }
+
+    public synchronized void addAfter(String baseName, String name,
+            IoFilter filter) {
+        EntryImpl baseEntry = checkOldName(baseName);
+        checkAddable(name);
+        register(baseEntry, name, filter);
+    }
+
+    public synchronized IoFilter remove(String name) {
+        EntryImpl entry = checkOldName(name);
+        deregister(entry);
+        return entry.getFilter();
+    }
+
+    public synchronized void remove(IoFilter filter) {
+        EntryImpl e = head.nextEntry;
+        while (e != tail) {
+            if (e.getFilter() == filter) {
+                deregister(e);
+                return;
+            }
+            e = e.nextEntry;
+        }
+        throw new IllegalArgumentException("Filter not found: "
+                + filter.getClass().getName());
+    }
+
+    public synchronized IoFilter remove(Class<? extends IoFilter> filterType) {
+        EntryImpl e = head.nextEntry;
+        while (e != tail) {
+            if (filterType.isAssignableFrom(e.getFilter().getClass())) {
+                IoFilter oldFilter = e.getFilter();
+                deregister(e);
+                return oldFilter;
+            }
+            e = e.nextEntry;
+        }
+        throw new IllegalArgumentException("Filter not found: "
+                + filterType.getName());
+    }
+
+    public synchronized IoFilter replace(String name, IoFilter newFilter) {
+        EntryImpl entry = checkOldName(name);
+        IoFilter oldFilter = entry.getFilter();
+        entry.setFilter(newFilter);
+        return oldFilter;
+    }
+
+    public synchronized void replace(IoFilter oldFilter, IoFilter newFilter) {
+        EntryImpl e = head.nextEntry;
+        while (e != tail) {
+            if (e.getFilter() == oldFilter) {
+                e.setFilter(newFilter);
+                return;
+            }
+            e = e.nextEntry;
+        }
+        throw new IllegalArgumentException("Filter not found: "
+                + oldFilter.getClass().getName());
+    }
+
+    public synchronized IoFilter replace(Class<? extends IoFilter> oldFilterType,
+            IoFilter newFilter) {
+        EntryImpl e = head.nextEntry;
+        while (e != tail) {
+            if (oldFilterType.isAssignableFrom(e.getFilter().getClass())) {
+                IoFilter oldFilter = e.getFilter();
+                e.setFilter(newFilter);
+                return oldFilter;
+            }
+            e = e.nextEntry;
+        }
+        throw new IllegalArgumentException("Filter not found: "
+                + oldFilterType.getName());
+    }
+
+    public synchronized void clear() throws Exception {
+        Iterator<String> it = new ArrayList<String>(name2entry.keySet())
+                .iterator();
+        while (it.hasNext()) {
+            String name = it.next();
+            if (contains(name)) {
+                remove(name);
+            }
+        }
+    }
+
+    private void register(EntryImpl prevEntry, String name, IoFilter filter) {
+        EntryImpl newEntry = new EntryImpl(prevEntry, prevEntry.nextEntry,
+                name, filter);
+
+        try {
+            filter.onPreAdd(this, name, newEntry.getNextFilter());
+        } catch (Exception e) {
+            throw new IoFilterLifeCycleException("onPreAdd(): " + name + ':'
+                    + filter + " in " + getSession(), e);
+        }
+
+        prevEntry.nextEntry.prevEntry = newEntry;
+        prevEntry.nextEntry = newEntry;
+        name2entry.put(name, newEntry);
+
+        try {
+            filter.onPostAdd(this, name, newEntry.getNextFilter());
+        } catch (Exception e) {
+            deregister0(newEntry);
+            throw new IoFilterLifeCycleException("onPostAdd(): " + name + ':'
+                    + filter + " in " + getSession(), e);
+        }
+    }
+
+    private void deregister(EntryImpl entry) {
+        IoFilter filter = entry.getFilter();
+
+        try {
+            filter.onPreRemove(this, entry.getName(), entry.getNextFilter());
+        } catch (Exception e) {
+            throw new IoFilterLifeCycleException("onPreRemove(): "
+                    + entry.getName() + ':' + filter + " in " + getSession(), e);
+        }
+
+        deregister0(entry);
+
+        try {
+            filter.onPostRemove(this, entry.getName(), entry.getNextFilter());
+        } catch (Exception e) {
+            throw new IoFilterLifeCycleException("onPostRemove(): "
+                    + entry.getName() + ':' + filter + " in " + getSession(), e);
+        }
+    }
+
+    private void deregister0(EntryImpl entry) {
+        EntryImpl prevEntry = entry.prevEntry;
+        EntryImpl nextEntry = entry.nextEntry;
+        prevEntry.nextEntry = nextEntry;
+        nextEntry.prevEntry = prevEntry;
+
+        name2entry.remove(entry.name);
+    }
+
+    /**
+     * Throws an exception when the specified filter name is not registered in this chain.
+     *
+     * @return An filter entry with the specified name.
+     */
+    private EntryImpl checkOldName(String baseName) {
+        EntryImpl e = (EntryImpl) name2entry.get(baseName);
+        if (e == null) {
+            throw new IllegalArgumentException("Filter not found:" + baseName);
+        }
+        return e;
+    }
+
+    /**
+     * Checks the specified filter name is already taken and throws an exception if already taken.
+     */
+    private void checkAddable(String name) {
+        if (name2entry.containsKey(name)) {
+            throw new IllegalArgumentException(
+                    "Other filter is using the same name '" + name + "'");
+        }
+    }
+
+    public void fireSessionCreated() {
+        Entry head = this.head;
+        callNextSessionCreated(head, session);
+    }
+
+    private void callNextSessionCreated(Entry entry, IoSession session) {
+        try {
+            entry.getFilter().sessionCreated(entry.getNextFilter(), session);
+        } catch (Throwable e) {
+            fireExceptionCaught(e);
+        }
+    }
+
+    public void fireSessionOpened() {
+        Entry head = this.head;
+        callNextSessionOpened(head, session);
+    }
+
+    private void callNextSessionOpened(Entry entry, IoSession session) {
+        try {
+            entry.getFilter().sessionOpened(entry.getNextFilter(), session);
+        } catch (Throwable e) {
+            fireExceptionCaught(e);
+        }
+    }
+
+    public void fireSessionClosed() {
+        // Update future.
+        try {
+            session.getCloseFuture().setClosed();
+        } catch (Throwable t) {
+            fireExceptionCaught(t);
+        }
+
+        // And start the chain.
+        Entry head = this.head;
+        callNextSessionClosed(head, session);
+    }
+
+    private void callNextSessionClosed(Entry entry, IoSession session) {
+        try {
+            entry.getFilter().sessionClosed(entry.getNextFilter(), session);
+        } catch (Throwable e) {
+            fireExceptionCaught(e);
+        }
+    }
+
+    public void fireSessionIdle(IdleStatus status) {
+        session.increaseIdleCount(status, System.currentTimeMillis());
+        Entry head = this.head;
+        callNextSessionIdle(head, session, status);
+    }
+
+    private void callNextSessionIdle(
+            Entry entry, IoSession session, IdleStatus status) {
+        try {
+            entry.getFilter().sessionIdle(entry.getNextFilter(), session,
+                    status);
+        } catch (Throwable e) {
+            fireExceptionCaught(e);
+        }
+    }
+
+    public void fireMessageReceived(Object message) {
+        if (message instanceof IoBuffer) {
+            session.increaseReadBytes(
+                    ((IoBuffer) message).remaining(),
+                    System.currentTimeMillis());
+        }
+
+        Entry head = this.head;
+        callNextMessageReceived(head, session, message);
+    }
+
+    private void callNextMessageReceived(
+            Entry entry, IoSession session, Object message) {
+        try {
+            entry.getFilter().messageReceived(
+                    entry.getNextFilter(), session, message);
+        } catch (Throwable e) {
+            fireExceptionCaught(e);
+        }
+    }
+
+    public void fireMessageSent(WriteRequest request) {
+        session.increaseWrittenMessages(request, System.currentTimeMillis());
+
+        try {
+            request.getFuture().setWritten();
+        } catch (Throwable t) {
+            fireExceptionCaught(t);
+        }
+
+        Entry head = this.head;
+        callNextMessageSent(head, session, request);
+    }
+    
+    private void callNextMessageSent(Entry entry, IoSession session,
+            WriteRequest writeRequest) {
+        try {
+            entry.getFilter().messageSent(entry.getNextFilter(), session,
+                    writeRequest);
+        } catch (Throwable e) {
+            fireExceptionCaught(e);
+        }
+    }
+
+    public void fireExceptionCaught(Throwable cause) {
+        Entry head = this.head;
+        callNextExceptionCaught(head, session, cause);
+    }
+
+    private void callNextExceptionCaught(Entry entry, IoSession session,
+            Throwable cause) {
+        // Notify the related future.
+        ConnectFuture future = (ConnectFuture) session.removeAttribute(SESSION_CREATED_FUTURE);
+        if (future == null) {
+            try {
+                entry.getFilter().exceptionCaught(entry.getNextFilter(), session,
+                        cause);
+            } catch (Throwable e) {
+                logger.warn("Unexpected exception from exceptionCaught handler.", e);
+            }
+        } else {
+            // Please note that this place is not the only place that
+            // calls ConnectFuture.setException().
+            session.close();
+            future.setException(cause);
+        }
+    }
+
+    public void fireFilterWrite(WriteRequest writeRequest) {
+        Entry tail = this.tail;
+        callPreviousFilterWrite(tail, session, writeRequest);
+    }
+
+    private void callPreviousFilterWrite(Entry entry, IoSession session,
+            WriteRequest writeRequest) {
+        try {
+            entry.getFilter().filterWrite(entry.getNextFilter(), session,
+                    writeRequest);
+        } catch (Throwable e) {
+            writeRequest.getFuture().setException(e);
+            fireExceptionCaught(e);
+        }
+    }
+
+    public void fireFilterClose() {
+        Entry tail = this.tail;
+        callPreviousFilterClose(tail, session);
+    }
+
+    private void callPreviousFilterClose(Entry entry, IoSession session) {
+        try {
+            entry.getFilter().filterClose(entry.getNextFilter(), session);
+        } catch (Throwable e) {
+            fireExceptionCaught(e);
+        }
+    }
+
+    public void fireFilterSetTrafficMask(TrafficMask trafficMask) {
+        Entry tail = this.tail;
+        callPreviousFilterSetTrafficMask(tail, session, trafficMask);
+    }
+
+    private void callPreviousFilterSetTrafficMask(Entry entry, IoSession session, TrafficMask trafficMask) {
+        try {
+            entry.getFilter().filterSetTrafficMask(entry.getNextFilter(), session, trafficMask);
+        } catch (Throwable e) {
+            fireExceptionCaught(e);
+        }
+    }
+    
+    public List<Entry> getAll() {
+        List<Entry> list = new ArrayList<Entry>();
+        EntryImpl e = head.nextEntry;
+        while (e != tail) {
+            list.add(e);
+            e = e.nextEntry;
+        }
+
+        return list;
+    }
+
+    public List<Entry> getAllReversed() {
+        List<Entry> list = new ArrayList<Entry>();
+        EntryImpl e = tail.prevEntry;
+        while (e != head) {
+            list.add(e);
+            e = e.prevEntry;
+        }
+        return list;
+    }
+
+    public boolean contains(String name) {
+        return getEntry(name) != null;
+    }
+
+    public boolean contains(IoFilter filter) {
+        return getEntry(filter) != null;
+    }
+
+    public boolean contains(Class<? extends IoFilter> filterType) {
+        return getEntry(filterType) != null;
+    }
+
+    @Override
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append("{ ");
+
+        boolean empty = true;
+
+        EntryImpl e = head.nextEntry;
+        while (e != tail) {
+            if (!empty) {
+                buf.append(", ");
+            } else {
+                empty = false;
+            }
+
+            buf.append('(');
+            buf.append(e.getName());
+            buf.append(':');
+            buf.append(e.getFilter());
+            buf.append(')');
+
+            e = e.nextEntry;
+        }
+
+        if (empty) {
+            buf.append("empty");
+        }
+
+        buf.append(" }");
+
+        return buf.toString();
+    }
+
+    @Override
+    protected void finalize() throws Throwable {
+        try {
+            this.clear();
+        } finally {
+            super.finalize();
+        }
+    }
+
+    private class HeadFilter extends IoFilterAdapter {
+        @Override
+        public void sessionCreated(NextFilter nextFilter, IoSession session) {
+            nextFilter.sessionCreated(session);
+        }
+
+        @Override
+        public void sessionOpened(NextFilter nextFilter, IoSession session) {
+            nextFilter.sessionOpened(session);
+        }
+
+        @Override
+        public void sessionClosed(NextFilter nextFilter, IoSession session) {
+            nextFilter.sessionClosed(session);
+        }
+
+        @Override
+        public void sessionIdle(NextFilter nextFilter, IoSession session,
+                IdleStatus status) {
+            nextFilter.sessionIdle(session, status);
+        }
+
+        @Override
+        public void exceptionCaught(NextFilter nextFilter, IoSession session,
+                Throwable cause) {
+            nextFilter.exceptionCaught(session, cause);
+        }
+
+        @Override
+        public void messageReceived(NextFilter nextFilter, IoSession session,
+                Object message) {
+            nextFilter.messageReceived(session, message);
+        }
+
+        @Override
+        public void messageSent(NextFilter nextFilter, IoSession session,
+                WriteRequest writeRequest) {
+            nextFilter.messageSent(session, writeRequest);
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public void filterWrite(NextFilter nextFilter, IoSession session,
+                WriteRequest writeRequest) throws Exception {
+
+            AbstractIoSession s = (AbstractIoSession) session;
+
+            // Maintain counters.
+            if (writeRequest.getMessage() instanceof IoBuffer) {
+                IoBuffer buffer = (IoBuffer) writeRequest.getMessage();
+                // I/O processor implementation will call buffer.reset()
+                // it after the write operation is finished, because
+                // the buffer will be specified with messageSent event.
+                buffer.mark();
+                int remaining = buffer.remaining();
+                if (remaining == 0) {
+                    // Zero-sized buffer means the internal message
+                    // delimiter.
+                    s.increaseScheduledWriteMessages();
+                } else {
+                    s.increaseScheduledWriteBytes(buffer.remaining());
+                }
+            } else {
+                s.increaseScheduledWriteMessages();
+            }
+
+            s.getWriteRequestQueue().offer(s, writeRequest);
+            if (s.getTrafficMask().isWritable()) {
+                s.getProcessor().flush(s);
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public void filterClose(NextFilter nextFilter, IoSession session)
+                throws Exception {
+            ((AbstractIoSession) session).getProcessor().remove(session);
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public void filterSetTrafficMask(NextFilter nextFilter,
+                IoSession session, TrafficMask trafficMask) throws Exception {
+            AbstractIoSession s = (AbstractIoSession) session;
+            s.setTrafficMaskNow(trafficMask);
+            s.getProcessor().updateTrafficMask(s);
+        }
+        
+    }
+
+    private static class TailFilter extends IoFilterAdapter {
+        @Override
+        public void sessionCreated(NextFilter nextFilter, IoSession session)
+                throws Exception {
+            try {
+                session.getHandler().sessionCreated(session);
+            } finally {
+                // Notify the related future.
+                ConnectFuture future = (ConnectFuture) session.removeAttribute(SESSION_CREATED_FUTURE);
+                if (future != null) {
+                    future.setSession(session);
+                }
+            }
+        }
+
+        @Override
+        public void sessionOpened(NextFilter nextFilter, IoSession session)
+                throws Exception {
+            session.getHandler().sessionOpened(session);
+        }
+
+        @Override
+        public void sessionClosed(NextFilter nextFilter, IoSession session)
+                throws Exception {
+            AbstractIoSession s = (AbstractIoSession) session;
+            try {
+                s.getHandler().sessionClosed(session);
+            } finally {
+                try {
+                    s.getWriteRequestQueue().dispose(session);
+                } finally {
+                    try {
+                        s.getAttributeMap().dispose(session);
+                    } finally {
+                        try {
+                            // Remove all filters.
+                            session.getFilterChain().clear();
+                        } finally {
+                            if (s.getConfig().isUseReadOperation()) {
+                                s.offerClosedReadFuture();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        @Override
+        public void sessionIdle(NextFilter nextFilter, IoSession session,
+                IdleStatus status) throws Exception {
+            session.getHandler().sessionIdle(session, status);
+        }
+
+        @Override
+        public void exceptionCaught(NextFilter nextFilter, IoSession session,
+                Throwable cause) throws Exception {
+            AbstractIoSession s = (AbstractIoSession) session;
+            try {
+                s.getHandler().exceptionCaught(s, cause);
+            } finally {
+                if (s.getConfig().isUseReadOperation()) {
+                    s.offerFailedReadFuture(cause);
+                }
+            }
+        }
+
+        @Override
+        public void messageReceived(NextFilter nextFilter, IoSession session,
+                Object message) throws Exception {
+            AbstractIoSession s = (AbstractIoSession) session;
+            if (!(message instanceof IoBuffer)) {
+                s.increaseReadMessages(System.currentTimeMillis());
+            } else if (!((IoBuffer) message).hasRemaining()) {
+                s.increaseReadMessages(System.currentTimeMillis());
+            }
+
+            try {
+                session.getHandler().messageReceived(s, message);
+            } finally {
+                if (s.getConfig().isUseReadOperation()) {
+                    s.offerReadFuture(message);
+                }
+            }
+        }
+
+        @Override
+        public void messageSent(NextFilter nextFilter, IoSession session,
+                WriteRequest writeRequest) throws Exception {
+            session.getHandler()
+                    .messageSent(session, writeRequest.getMessage());
+        }
+
+        @Override
+        public void filterWrite(NextFilter nextFilter, IoSession session,
+                WriteRequest writeRequest) throws Exception {
+            nextFilter.filterWrite(session, writeRequest);
+        }
+
+        @Override
+        public void filterClose(NextFilter nextFilter, IoSession session)
+                throws Exception {
+            nextFilter.filterClose(session);
+        }
+    }
+
+    private class EntryImpl implements Entry {
+        private EntryImpl prevEntry;
+
+        private EntryImpl nextEntry;
+
+        private final String name;
+
+        private IoFilter filter;
+
+        private final NextFilter nextFilter;
+
+        private EntryImpl(EntryImpl prevEntry, EntryImpl nextEntry,
+                String name, IoFilter filter) {
+            if (filter == null) {
+                throw new NullPointerException("filter");
+            }
+            if (name == null) {
+                throw new NullPointerException("name");
+            }
+
+            this.prevEntry = prevEntry;
+            this.nextEntry = nextEntry;
+            this.name = name;
+            this.filter = filter;
+            this.nextFilter = new NextFilter() {
+                public void sessionCreated(IoSession session) {
+                    Entry nextEntry = EntryImpl.this.nextEntry;
+                    callNextSessionCreated(nextEntry, session);
+                }
+
+                public void sessionOpened(IoSession session) {
+                    Entry nextEntry = EntryImpl.this.nextEntry;
+                    callNextSessionOpened(nextEntry, session);
+                }
+
+                public void sessionClosed(IoSession session) {
+                    Entry nextEntry = EntryImpl.this.nextEntry;
+                    callNextSessionClosed(nextEntry, session);
+                }
+
+                public void sessionIdle(IoSession session, IdleStatus status) {
+                    Entry nextEntry = EntryImpl.this.nextEntry;
+                    callNextSessionIdle(nextEntry, session, status);
+                }
+
+                public void exceptionCaught(IoSession session, Throwable cause) {
+                    Entry nextEntry = EntryImpl.this.nextEntry;
+                    callNextExceptionCaught(nextEntry, session, cause);
+                }
+
+                public void messageReceived(IoSession session, Object message) {
+                    Entry nextEntry = EntryImpl.this.nextEntry;
+                    callNextMessageReceived(nextEntry, session, message);
+                }
+
+                public void messageSent(IoSession session,
+                        WriteRequest writeRequest) {
+                    Entry nextEntry = EntryImpl.this.nextEntry;
+                    callNextMessageSent(nextEntry, session, writeRequest);
+                }
+
+                public void filterWrite(IoSession session,
+                        WriteRequest writeRequest) {
+                    Entry nextEntry = EntryImpl.this.prevEntry;
+                    callPreviousFilterWrite(nextEntry, session, writeRequest);
+                }
+
+                public void filterClose(IoSession session) {
+                    Entry nextEntry = EntryImpl.this.prevEntry;
+                    callPreviousFilterClose(nextEntry, session);
+                }
+
+                public void filterSetTrafficMask(IoSession session,
+                        TrafficMask trafficMask) {
+                    Entry nextEntry = EntryImpl.this.prevEntry;
+                    callPreviousFilterSetTrafficMask(nextEntry, session, trafficMask);
+                }
+            };
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public IoFilter getFilter() {
+            return filter;
+        }
+
+        private void setFilter(IoFilter filter) {
+            if (filter == null) {
+                throw new NullPointerException("filter");
+            }
+
+            this.filter = filter;
+        }
+
+        public NextFilter getNextFilter() {
+            return nextFilter;
+        }
+
+        @Override
+        public String toString() {
+            return "(" + getName() + ':' + filter + ')';
+        }
+
+        public void addAfter(String name, IoFilter filter) {
+            DefaultIoFilterChain.this.addAfter(getName(), name, filter);
+        }
+
+        public void addBefore(String name, IoFilter filter) {
+            DefaultIoFilterChain.this.addBefore(getName(), name, filter);
+        }
+
+        public void remove() {
+            DefaultIoFilterChain.this.remove(getName());
+        }
+
+        public void replace(IoFilter newFilter) {
+            DefaultIoFilterChain.this.replace(getName(), newFilter);
+        }
+    }
+}