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/03/12 10:26:42 UTC
svn commit: r385262 - in
/directory/trunks/mina/core/src/main/java/org/apache/mina: common/
common/support/ filter/ transport/socket/nio/support/ transport/vmpipe/
transport/vmpipe/support/
Author: trustin
Date: Sun Mar 12 01:26:39 2006
New Revision: 385262
URL: http://svn.apache.org/viewcvs?rev=385262&view=rev
Log:
* Resolved issue: DIRMINA-190 (ThreadModel interface which encapsulates ThreadPoolFilter composition.)
** Added ThreadModel
** Added PooledThreadModel
** Adjusted default maximum pool size to 16
Added:
directory/trunks/mina/core/src/main/java/org/apache/mina/common/PooledThreadModel.java (with props)
directory/trunks/mina/core/src/main/java/org/apache/mina/common/ThreadModel.java (with props)
Modified:
directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoServiceConfig.java
directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
directory/trunks/mina/core/src/main/java/org/apache/mina/filter/ThreadPoolFilter.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketConnectorDelegate.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoServiceConfig.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoServiceConfig.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoServiceConfig.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoServiceConfig.java Sun Mar 12 01:26:39 2006
@@ -61,6 +61,16 @@
DefaultIoFilterChainBuilder getFilterChain();
/**
+ * Returns the default {@link ThreadModel} of the {@link IoService}.
+ */
+ ThreadModel getThreadModel();
+
+ /**
+ * Sets the default {@link ThreadModel} of the {@link IoService}.
+ */
+ void setThreadModel( ThreadModel threadModel );
+
+ /**
* Returns a deep clone of this configuration.
*/
Object clone();
Added: directory/trunks/mina/core/src/main/java/org/apache/mina/common/PooledThreadModel.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/common/PooledThreadModel.java?rev=385262&view=auto
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/PooledThreadModel.java (added)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/PooledThreadModel.java Sun Mar 12 01:26:39 2006
@@ -0,0 +1,77 @@
+package org.apache.mina.common;
+
+import org.apache.mina.filter.ThreadPoolFilter;
+
+public class PooledThreadModel implements ThreadModel
+{
+ /**
+ * @see ThreadPoolFilter#DEFAULT_MAXIMUM_POOL_SIZE
+ */
+ public static final int DEFAULT_MAXIMUM_POOL_SIZE = ThreadPoolFilter.DEFAULT_MAXIMUM_POOL_SIZE;
+
+ /**
+ * @see ThreadPoolFilter#DEFAULT_KEEP_ALIVE_TIME
+ */
+ public static final int DEFAULT_KEEP_ALIVE_TIME = ThreadPoolFilter.DEFAULT_KEEP_ALIVE_TIME;
+
+ private static int id = 1;
+
+ private final ThreadPoolFilter filter;
+
+ public PooledThreadModel()
+ {
+ this( "AnonymousIoService-" + id++, DEFAULT_MAXIMUM_POOL_SIZE );
+ }
+
+ public PooledThreadModel( String threadNamePrefix )
+ {
+ this( threadNamePrefix, DEFAULT_MAXIMUM_POOL_SIZE );
+ }
+
+ public PooledThreadModel( String threadNamePrefix, int maxThreads )
+ {
+ filter = new ThreadPoolFilter();
+ setMaximumPoolSize( maxThreads );
+ setThreadNamePrefix( threadNamePrefix );
+ }
+
+ public String getThreadNamePrefix()
+ {
+ return filter.getThreadNamePrefix();
+ }
+
+ public void setThreadNamePrefix( String threadNamePrefix )
+ {
+ filter.setThreadNamePrefix( threadNamePrefix );
+ }
+
+ public int getPoolSize()
+ {
+ return filter.getPoolSize();
+ }
+
+ public int getMaximumPoolSize()
+ {
+ return filter.getMaximumPoolSize();
+ }
+
+ public int getKeepAliveTime()
+ {
+ return filter.getKeepAliveTime();
+ }
+
+ public void setMaximumPoolSize( int maximumPoolSize )
+ {
+ filter.setMaximumPoolSize( maximumPoolSize );
+ }
+
+ public void setKeepAliveTime( int keepAliveTime )
+ {
+ filter.setKeepAliveTime( keepAliveTime );
+ }
+
+ public void buildFilterChain( IoFilterChain chain ) throws Exception
+ {
+ chain.addFirst( PooledThreadModel.class.getName(), filter );
+ }
+}
Propchange: directory/trunks/mina/core/src/main/java/org/apache/mina/common/PooledThreadModel.java
------------------------------------------------------------------------------
svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision
Added: directory/trunks/mina/core/src/main/java/org/apache/mina/common/ThreadModel.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/common/ThreadModel.java?rev=385262&view=auto
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/ThreadModel.java (added)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/ThreadModel.java Sun Mar 12 01:26:39 2006
@@ -0,0 +1,43 @@
+/*
+ * @(#) $Id$
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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;
+
+/**
+ * Represents a thread model of an {@link IoService}. There's no essential
+ * difference from {@link IoFilterChainBuilder}. The only difference is that
+ * {@link ThreadModel} is executed later than the {@link IoFilterChainBuilder}
+ * you specified. However, please don't abuse this internal behavior; it can
+ * change.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface ThreadModel extends IoFilterChainBuilder
+{
+ /**
+ * A {@link ThreadModel} which make MINA not manage a thread model at all.
+ */
+ static final ThreadModel MANUAL = new ThreadModel()
+ {
+ public void buildFilterChain( IoFilterChain chain ) throws Exception
+ {
+ // Do nothing.
+ }
+ };
+}
Propchange: directory/trunks/mina/core/src/main/java/org/apache/mina/common/ThreadModel.java
------------------------------------------------------------------------------
svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java Sun Mar 12 01:26:39 2006
@@ -23,6 +23,8 @@
import org.apache.mina.common.DefaultIoFilterChainBuilder;
import org.apache.mina.common.IoFilterChainBuilder;
import org.apache.mina.common.IoServiceConfig;
+import org.apache.mina.common.PooledThreadModel;
+import org.apache.mina.common.ThreadModel;
/**
* A base implementation of {@link IoServiceConfig}.
@@ -36,6 +38,11 @@
* Current filter chain builder.
*/
private IoFilterChainBuilder filterChainBuilder = new DefaultIoFilterChainBuilder();
+
+ /**
+ * Current thread model.
+ */
+ private ThreadModel threadModel = new PooledThreadModel();
public BaseIoServiceConfig()
{
@@ -69,6 +76,20 @@
}
}
+ public ThreadModel getThreadModel()
+ {
+ return threadModel;
+ }
+
+ public void setThreadModel( ThreadModel threadModel )
+ {
+ if( threadModel == null )
+ {
+ throw new NullPointerException( "threadModel" );
+ }
+ this.threadModel = threadModel;
+ }
+
public Object clone()
{
BaseIoServiceConfig ret;
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/filter/ThreadPoolFilter.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/filter/ThreadPoolFilter.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/filter/ThreadPoolFilter.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/filter/ThreadPoolFilter.java Sun Mar 12 01:26:39 2006
@@ -59,9 +59,9 @@
public class ThreadPoolFilter extends IoFilterAdapter
{
/**
- * Default maximum size of thread pool (2G).
+ * Default maximum size of thread pool (16).
*/
- public static final int DEFAULT_MAXIMUM_POOL_SIZE = Integer.MAX_VALUE;
+ public static final int DEFAULT_MAXIMUM_POOL_SIZE = 16;
/**
* Default keep-alive time of thread pool (1 min).
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java Sun Mar 12 01:26:39 2006
@@ -227,6 +227,7 @@
{
this.getFilterChainBuilder().buildFilterChain( s.getFilterChain() );
req.config.getFilterChainBuilder().buildFilterChain( s.getFilterChain() );
+ req.config.getThreadModel().buildFilterChain( s.getFilterChain() );
( ( DatagramFilterChain ) s.getFilterChain() ).sessionCreated( s );
}
catch( Throwable t )
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Sun Mar 12 01:26:39 2006
@@ -551,6 +551,7 @@
{
getFilterChainBuilder().buildFilterChain( session.getFilterChain() );
req.config.getFilterChainBuilder().buildFilterChain( session.getFilterChain() );
+ req.config.getThreadModel().buildFilterChain( session.getFilterChain() );
( ( DatagramFilterChain ) session.getFilterChain() ).sessionCreated( session );
SelectionKey key = req.channel.register( selector,
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java Sun Mar 12 01:26:39 2006
@@ -410,6 +410,7 @@
req.address );
getFilterChainBuilder().buildFilterChain( session.getFilterChain() );
req.config.getFilterChainBuilder().buildFilterChain( session.getFilterChain() );
+ req.config.getThreadModel().buildFilterChain( session.getFilterChain() );
( ( SocketFilterChain ) session.getFilterChain() ).sessionCreated( session );
session.getManagedSessions().add( session );
session.getIoProcessor().addNew( session );
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketConnectorDelegate.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketConnectorDelegate.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketConnectorDelegate.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketConnectorDelegate.java Sun Mar 12 01:26:39 2006
@@ -287,6 +287,7 @@
{
getFilterChainBuilder().buildFilterChain( session.getFilterChain() );
config.getFilterChainBuilder().buildFilterChain( session.getFilterChain() );
+ config.getThreadModel().buildFilterChain( session.getFilterChain() );
( ( SocketFilterChain ) session.getFilterChain() ).sessionCreated( session );
}
catch( Throwable e )
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- 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 Sun Mar 12 01:26:39 2006
@@ -72,6 +72,7 @@
AnonymousSocketAddress.INSTANCE,
handler,
config.getFilterChainBuilder(),
+ config.getThreadModel(),
entry );
future.setSession( session );
}
Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java?rev=385262&r1=385261&r2=385262&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java Sun Mar 12 01:26:39 2006
@@ -14,6 +14,7 @@
import org.apache.mina.common.IoService;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.IoSessionConfig;
+import org.apache.mina.common.ThreadModel;
import org.apache.mina.common.TransportType;
import org.apache.mina.common.IoFilter.WriteRequest;
import org.apache.mina.common.support.BaseIoSession;
@@ -45,7 +46,7 @@
* Constructor for client-side session.
*/
public VmPipeSessionImpl( IoService manager, Object lock, SocketAddress localAddress,
- IoHandler handler, IoFilterChainBuilder filterChainBuilder,
+ IoHandler handler, IoFilterChainBuilder filterChainBuilder, ThreadModel threadModel,
VmPipe remoteEntry ) throws IOException
{
this.manager = manager;
@@ -65,6 +66,7 @@
{
remoteEntry.getAcceptor().getFilterChainBuilder().buildFilterChain( remoteSession.getFilterChain() );
remoteEntry.getConfig().getFilterChainBuilder().buildFilterChain( remoteSession.getFilterChain() );
+ remoteEntry.getConfig().getThreadModel().buildFilterChain( remoteSession.getFilterChain() );
( ( VmPipeFilterChain ) remoteSession.getFilterChain() ).sessionCreated( remoteSession );
}
catch( Throwable t )
@@ -80,6 +82,7 @@
{
manager.getFilterChainBuilder().buildFilterChain( filterChain );
filterChainBuilder.buildFilterChain( filterChain );
+ threadModel.buildFilterChain( filterChain );
handler.sessionCreated( this );
}
catch( Throwable t )