You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2006/09/15 07:44:12 UTC
svn commit: r446526 - in /directory/trunks/mina/core/src:
main/java/org/apache/mina/common/support/
main/java/org/apache/mina/transport/socket/nio/
main/java/org/apache/mina/transport/vmpipe/
test/java/org/apache/mina/common/support/
Author: trustin
Date: Thu Sep 14 22:44:11 2006
New Revision: 446526
URL: http://svn.apache.org/viewvc?view=rev&rev=446526
Log:
* Reverted Peter's fix because we need more testing and clarification
* Fixed a possible thread safety problem in IoServiceListenerSupport
* Fixed a bug that IoServiceListener.serviceActivated() is not fired for VM-pipe transport
Modified:
directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java
directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java
directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoService.java
directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
directory/trunks/mina/core/src/test/java/org/apache/mina/common/support/IoServiceListenerSupportTest.java
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java
URL: http://svn.apache.org/viewvc/directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java?view=diff&rev=446526&r1=446525&r2=446526
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java Thu Sep 14 22:44:11 2006
@@ -36,7 +36,6 @@
{
protected BaseIoAcceptor()
{
- super( false );
}
public void bind( SocketAddress address, IoHandler handler ) throws IOException
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java
URL: http://svn.apache.org/viewvc/directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java?view=diff&rev=446526&r1=446525&r2=446526
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java Thu Sep 14 22:44:11 2006
@@ -35,11 +35,6 @@
{
protected BaseIoConnector()
{
- super( true );
- }
-
- protected BaseIoConnector( boolean deactivateWhenIdle) {
- super( deactivateWhenIdle );
}
public ConnectFuture connect( SocketAddress address, IoHandler handler )
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoService.java
URL: http://svn.apache.org/viewvc/directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoService.java?view=diff&rev=446526&r1=446525&r2=446526
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoService.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoService.java Thu Sep 14 22:44:11 2006
@@ -45,9 +45,9 @@
*/
private final IoServiceListenerSupport listeners;
- protected BaseIoService( boolean deactivateWhenIdle )
+ protected BaseIoService()
{
- this.listeners = new IoServiceListenerSupport( deactivateWhenIdle );
+ this.listeners = new IoServiceListenerSupport();
}
public IoFilterChainBuilder getFilterChainBuilder()
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java
URL: http://svn.apache.org/viewvc/directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java?view=diff&rev=446526&r1=446525&r2=446526
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/IoServiceListenerSupport.java Thu Sep 14 22:44:11 2006
@@ -64,14 +64,11 @@
*/
private final Map managedSessions = new HashMap();
- private final boolean deactivateWhenIdle;
-
/**
* Creates a new instance.
*/
- public IoServiceListenerSupport( boolean deactivateWhenIdle )
+ public IoServiceListenerSupport()
{
- this.deactivateWhenIdle = deactivateWhenIdle;
}
/**
@@ -123,7 +120,7 @@
synchronized( sessions )
{
- return Collections.unmodifiableSet( sessions );
+ return new IdentityHashSet( sessions );
}
}
@@ -248,29 +245,25 @@
// Get the session set.
Set sessions;
+ boolean lastSession = false;
synchronized( managedSessions )
{
sessions = ( Set ) managedSessions.get( serviceAddress );
- }
-
- // Ignore if unknown.
- if( sessions == null )
- {
- return;
- }
-
- // Try to remove the remaining empty seession set after removal.
- boolean lastSession = false;
- synchronized( sessions )
- {
- sessions.remove( session );
- if( sessions.isEmpty() )
+ // Ignore if unknown.
+ if( sessions == null )
+ {
+ return;
+ }
+
+ // Try to remove the remaining empty seession set after removal.
+ synchronized( sessions )
{
- synchronized( managedSessions )
+ sessions.remove( session );
+ if( sessions.isEmpty() )
{
managedSessions.remove( serviceAddress );
+ lastSession = true;
}
- lastSession = true;
}
}
@@ -291,8 +284,8 @@
finally
{
// Fire a virtual service deactivation event for the last session of the connector.
- //TODO double-check that this is *STILL* the last service. May not be the case
- if( deactivateWhenIdle && lastSession )
+ //TODO double-check that this is *STILL* the last session. May not be the case
+ if( session.getService() instanceof IoConnector && lastSession )
{
fireServiceDeactivated(
session.getService(), session.getServiceAddress(),
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
URL: http://svn.apache.org/viewvc/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java?view=diff&rev=446526&r1=446525&r2=446526
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java Thu Sep 14 22:44:11 2006
@@ -73,7 +73,7 @@
*/
public SocketConnector()
{
- this( 1, true );
+ this( 1 );
}
/**
@@ -81,10 +81,8 @@
*
* @param processorCount Number of processing threads
*/
- public SocketConnector( int processorCount, boolean deactivateWhenIdle )
+ public SocketConnector( int processorCount )
{
- super( deactivateWhenIdle );
-
if( processorCount < 1 )
{
throw new IllegalArgumentException( "Must have at least one processor" );
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
URL: http://svn.apache.org/viewvc/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java?view=diff&rev=446526&r1=446525&r2=446526
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java Thu Sep 14 22:44:11 2006
@@ -82,6 +82,8 @@
( VmPipeAddress ) address,
handler, config, getListeners() ) );
}
+
+ getListeners().fireServiceActivated( this, address, handler, config );
}
public void unbind( SocketAddress address )
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
URL: http://svn.apache.org/viewvc/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?view=diff&rev=446526&r1=446525&r2=446526
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java Thu Sep 14 22:44:11 2006
@@ -52,11 +52,11 @@
}
};
- public VmPipeConnector() {
- }
-
- public VmPipeConnector(boolean deactivateWhenIdle) {
- super( deactivateWhenIdle );
+ /**
+ * Creates a new instance.
+ */
+ public VmPipeConnector()
+ {
}
public ConnectFuture connect( SocketAddress address, IoHandler handler, IoServiceConfig config )
Modified: directory/trunks/mina/core/src/test/java/org/apache/mina/common/support/IoServiceListenerSupportTest.java
URL: http://svn.apache.org/viewvc/directory/trunks/mina/core/src/test/java/org/apache/mina/common/support/IoServiceListenerSupportTest.java?view=diff&rev=446526&r1=446525&r2=446526
==============================================================================
--- directory/trunks/mina/core/src/test/java/org/apache/mina/common/support/IoServiceListenerSupportTest.java (original)
+++ directory/trunks/mina/core/src/test/java/org/apache/mina/common/support/IoServiceListenerSupportTest.java Thu Sep 14 22:44:11 2006
@@ -49,7 +49,7 @@
public void testServiceLifecycle() throws Exception
{
- IoServiceListenerSupport support = new IoServiceListenerSupport( false );
+ IoServiceListenerSupport support = new IoServiceListenerSupport();
MockControl listenerControl = MockControl.createStrictControl( IoServiceListener.class );
IoServiceListener listener = ( IoServiceListener ) listenerControl.getMock();
@@ -87,7 +87,7 @@
public void testSessionLifecycle() throws Exception
{
- IoServiceListenerSupport support = new IoServiceListenerSupport( false );
+ IoServiceListenerSupport support = new IoServiceListenerSupport();
TestSession session = new TestSession( ADDRESS );
@@ -138,7 +138,7 @@
public void testDisconnectOnUnbind() throws Exception
{
- final IoServiceListenerSupport support = new IoServiceListenerSupport( false );
+ final IoServiceListenerSupport support = new IoServiceListenerSupport();
MockControl acceptorControl = MockControl.createStrictControl( IoAcceptor.class );
IoAcceptor acceptor = ( IoAcceptor ) acceptorControl.getMock();
@@ -213,7 +213,7 @@
public void testConnectorActivation() throws Exception
{
- IoServiceListenerSupport support = new IoServiceListenerSupport( true );
+ IoServiceListenerSupport support = new IoServiceListenerSupport();
MockControl connectorControl = MockControl.createStrictControl( IoConnector.class );
IoConnector connector = ( IoConnector ) connectorControl.getMock();