You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/01/22 07:56:57 UTC
svn commit: r498547 - in /mina/branches:
1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
Author: trustin
Date: Sun Jan 21 22:56:57 2007
New Revision: 498547
URL: http://svn.apache.org/viewvc?view=rev&rev=498547
Log:
Resolved issue: DIRMINA-287 (DatagramConnector.getRecycledSession() is inefficient.)
* Removed DatagramConnectorDelegate.getRecycledSession().
* Emulated previous buggy recycler behavior anyway. (See DIRMINA-319, DatagramConnector doesn't need IoSessionRecycler at all.)
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?view=diff&rev=498547&r1=498546&r2=498547
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Sun Jan 21 22:56:57 2007
@@ -274,7 +274,6 @@
{
selector.wakeup();
}
- selector.wakeup();
}
private void scheduleTrafficControl( DatagramSessionImpl session )
@@ -409,13 +408,10 @@
it.remove();
DatagramSessionImpl session = ( DatagramSessionImpl ) key.attachment();
-
- DatagramSessionImpl replaceSession = getRecycledSession(session);
-
- if(replaceSession != null)
- {
- session = replaceSession;
- }
+
+ // Let the recycler know that the session is still active.
+ getSessionRecycler( session ).recycle(
+ session.getLocalAddress(), session.getRemoteAddress() );
if( key.isReadable() && session.getTrafficMask().isReadable() )
{
@@ -429,30 +425,6 @@
}
}
- private DatagramSessionImpl getRecycledSession( IoSession session )
- {
- IoSessionRecycler sessionRecycler = getSessionRecycler( session );
- DatagramSessionImpl replaceSession = null;
-
- if ( sessionRecycler != null )
- {
- synchronized ( sessionRecycler )
- {
- replaceSession = ( DatagramSessionImpl ) sessionRecycler.recycle( session.getLocalAddress(), session
- .getRemoteAddress() );
-
- if ( replaceSession != null )
- {
- return replaceSession;
- }
-
- sessionRecycler.put( session );
- }
- }
-
- return null;
- }
-
private IoSessionRecycler getSessionRecycler( IoSession session )
{
IoServiceConfig config = session.getServiceConfig();
@@ -621,22 +593,15 @@
boolean success = false;
try
{
- DatagramSessionImpl replaceSession = getRecycledSession( session );
+ SelectionKey key = req.channel.register( selector,
+ SelectionKey.OP_READ, session );
- if ( replaceSession != null )
- {
- session = replaceSession;
- }
- else
- {
- SelectionKey key = req.channel.register( selector,
- SelectionKey.OP_READ, session );
+ session.setSelectionKey( key );
+ buildFilterChain( req, session );
+ getSessionRecycler( session ).put( session );
- session.setSelectionKey( key );
- buildFilterChain( req, session );
- // The CONNECT_FUTURE attribute is cleared and notified here.
- getListeners().fireSessionCreated( session );
- }
+ // The CONNECT_FUTURE attribute is cleared and notified here.
+ getListeners().fireSessionCreated( session );
success = true;
}
catch( Throwable t )
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?view=diff&rev=498547&r1=498546&r2=498547
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Sun Jan 21 22:56:57 2007
@@ -36,11 +36,11 @@
import org.apache.mina.common.ConnectFuture;
import org.apache.mina.common.ExceptionMonitor;
import org.apache.mina.common.IoConnector;
-import org.apache.mina.common.IoFilter.WriteRequest;
import org.apache.mina.common.IoHandler;
import org.apache.mina.common.IoServiceConfig;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.IoSessionRecycler;
+import org.apache.mina.common.IoFilter.WriteRequest;
import org.apache.mina.common.support.AbstractIoFilterChain;
import org.apache.mina.common.support.BaseIoConnector;
import org.apache.mina.common.support.DefaultConnectFuture;
@@ -388,12 +388,9 @@
DatagramSessionImpl session = ( DatagramSessionImpl ) key.attachment();
- DatagramSessionImpl replaceSession = getRecycledSession( session );
-
- if( replaceSession != null )
- {
- session = replaceSession;
- }
+ // Let the recycler know that the session is still active.
+ getSessionRecycler( session ).recycle(
+ session.getLocalAddress(), session.getRemoteAddress() );
if( key.isReadable() && session.getTrafficMask().isReadable() )
{
@@ -407,30 +404,6 @@
}
}
- private DatagramSessionImpl getRecycledSession( IoSession session )
- {
- IoSessionRecycler sessionRecycler = getSessionRecycler( session );
-
- if( sessionRecycler != null )
- {
- synchronized( sessionRecycler )
- {
- DatagramSessionImpl replaceSession =
- ( DatagramSessionImpl ) sessionRecycler.recycle( session.getLocalAddress(),
- session.getRemoteAddress() );
-
- if( replaceSession != null )
- {
- return replaceSession;
- }
-
- sessionRecycler.put( session );
- }
- }
-
- return null;
- }
-
private IoSessionRecycler getSessionRecycler( IoSession session )
{
IoServiceConfig config = session.getServiceConfig();
@@ -580,22 +553,15 @@
boolean success = false;
try
{
- DatagramSessionImpl replaceSession = getRecycledSession( session );
+ SelectionKey key = req.channel.register( selector,
+ SelectionKey.OP_READ, session );
- if( replaceSession != null )
- {
- session = replaceSession;
- }
- else
- {
- SelectionKey key = req.channel.register( selector,
- SelectionKey.OP_READ, session );
+ session.setSelectionKey( key );
+ buildFilterChain( req, session );
+ getSessionRecycler( session ).put( session );
- session.setSelectionKey( key );
- buildFilterChain( req, session );
- // The CONNECT_FUTURE attribute is cleared and notified here.
- getListeners().fireSessionCreated( session );
- }
+ // The CONNECT_FUTURE attribute is cleared and notified here.
+ getListeners().fireSessionCreated( session );
success = true;
}
catch( Throwable t )