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);
+ }
+ }
+}