1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.directory.server.protocol.shared;
22
23 import java.io.IOException;
24 import java.net.SocketAddress;
25 import java.util.concurrent.Executor;
26 import java.util.concurrent.Executors;
27
28 import org.apache.mina.common.IoHandler;
29 import org.apache.mina.common.IoServiceConfig;
30 import org.apache.mina.common.ThreadModel;
31 import org.apache.mina.filter.executor.ExecutorFilter;
32
33
34
35
36
37 public class SocketAcceptor extends org.apache.mina.transport.socket.nio.SocketAcceptor
38 {
39
40 private static final int DEFAULT_THREADS = 10;
41
42 public SocketAcceptor( Executor logicExecutor )
43 {
44 super( Runtime.getRuntime().availableProcessors(), Executors.newCachedThreadPool());
45
46 if ( logicExecutor == null )
47 {
48 logicExecutor = Executors.newFixedThreadPool( DEFAULT_THREADS );
49 }
50
51 getFilterChain().addLast( "executor", new ExecutorFilter( logicExecutor ) );
52 }
53
54 public void bind( SocketAddress address, IoHandler ioHandler, IoServiceConfig tcpConfig ) throws IOException
55 {
56 tcpConfig.setThreadModel( ThreadModel.MANUAL );
57 super.bind( address, ioHandler, tcpConfig );
58 }
59
60 public void unbind( SocketAddress address )
61 {
62 super.unbind(address);
63 }
64 }