Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 42811 invoked from network); 15 Sep 2006 05:44:41 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 15 Sep 2006 05:44:41 -0000 Received: (qmail 99152 invoked by uid 500); 15 Sep 2006 05:44:40 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 99122 invoked by uid 500); 15 Sep 2006 05:44:40 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 99108 invoked by uid 99); 15 Sep 2006 05:44:40 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 14 Sep 2006 22:44:40 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 14 Sep 2006 22:44:39 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 4A2211A981A; Thu, 14 Sep 2006 22:44:13 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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/ Date: Fri, 15 Sep 2006 05:44:12 -0000 To: commits@directory.apache.org From: trustin@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20060915054413.4A2211A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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();