S
- the type of the IoSession
to be managed by the specified
IoProcessor
.public class SimpleIoProcessorPool<S extends AbstractIoSession> extends java.lang.Object implements IoProcessor<S>
IoProcessor
pool that distributes IoSession
s into one or more
IoProcessor
s. Most current transport implementations use this pool internally
to perform better in a multi-core environment, and therefore, you won't need to
use this pool directly unless you are running multiple IoService
s in the
same JVM.
If you are running multiple IoService
s, you could want to share the pool
among all services. To do so, you can create a new SimpleIoProcessorPool
instance by yourself and provide the pool as a constructor parameter when you
create the services.
This pool uses Java reflection API to create multiple IoProcessor
instances.
It tries to instantiate the processor in the following order:
ExecutorService
parameter.Executor
parameter.
// Create a shared pool.
SimpleIoProcessorPool<NioSession> pool =
new SimpleIoProcessorPool<NioSession>(NioProcessor.class, 16);
// Create two services that share the same pool.
SocketAcceptor acceptor = new NioSocketAcceptor(pool);
SocketConnector connector = new NioSocketConnector(pool);
...
// Release related resources.
connector.dispose();
acceptor.dispose();
pool.dispose();
Constructor and Description |
---|
SimpleIoProcessorPool(java.lang.Class<? extends IoProcessor<S>> processorType)
Creates a new instance of SimpleIoProcessorPool with a default
size of NbCPUs +1.
|
SimpleIoProcessorPool(java.lang.Class<? extends IoProcessor<S>> processorType,
java.util.concurrent.Executor executor)
Creates a new instance of SimpleIoProcessorPool with an executor
|
SimpleIoProcessorPool(java.lang.Class<? extends IoProcessor<S>> processorType,
java.util.concurrent.Executor executor,
int size)
Creates a new instance of SimpleIoProcessorPool with an executor
|
SimpleIoProcessorPool(java.lang.Class<? extends IoProcessor<S>> processorType,
int size)
Creates a new instance of SimpleIoProcessorPool with a defined
number of IoProcessors in the pool
|
Modifier and Type | Method and Description |
---|---|
void |
add(S session)
Adds the specified
session to the I/O processor so that
the I/O processor starts to perform any I/O operations related
with the session . |
void |
dispose()
Releases any resources allocated by this processor.
|
void |
flush(S session)
Flushes the internal write request queue of the specified
session . |
boolean |
isDisposed()
Returns true if and if only all resources of this processor
have been disposed.
|
boolean |
isDisposing()
Returns true if and if only
IoProcessor.dispose() method has
been called. |
void |
remove(S session)
Removes and closes the specified
session from the I/O
processor so that the I/O processor closes the connection
associated with the session and releases any other related
resources. |
void |
updateTrafficControl(S session)
Controls the traffic of the specified
session depending of the
IoSession.isReadSuspended() and IoSession.isWriteSuspended()
flags |
public SimpleIoProcessorPool(java.lang.Class<? extends IoProcessor<S>> processorType)
processorType
- The type of IoProcessor to usepublic SimpleIoProcessorPool(java.lang.Class<? extends IoProcessor<S>> processorType, int size)
processorType
- The type of IoProcessor to usesize
- The number of IoProcessor in the poolpublic SimpleIoProcessorPool(java.lang.Class<? extends IoProcessor<S>> processorType, java.util.concurrent.Executor executor)
processorType
- The type of IoProcessor to useexecutor
- The Executor
public SimpleIoProcessorPool(java.lang.Class<? extends IoProcessor<S>> processorType, java.util.concurrent.Executor executor, int size)
processorType
- The type of IoProcessor to useexecutor
- The Executor
size
- The number of IoProcessor in the poolpublic final void add(S session)
session
to the I/O processor so that
the I/O processor starts to perform any I/O operations related
with the session
.add
in interface IoProcessor<S extends AbstractIoSession>
public final void flush(S session)
session
.flush
in interface IoProcessor<S extends AbstractIoSession>
public final void remove(S session)
session
from the I/O
processor so that the I/O processor closes the connection
associated with the session
and releases any other related
resources.remove
in interface IoProcessor<S extends AbstractIoSession>
public final void updateTrafficControl(S session)
session
depending of the
IoSession.isReadSuspended()
and IoSession.isWriteSuspended()
flagsupdateTrafficControl
in interface IoProcessor<S extends AbstractIoSession>
public boolean isDisposed()
isDisposed
in interface IoProcessor<S extends AbstractIoSession>
public boolean isDisposing()
IoProcessor.dispose()
method has
been called. Please note that this method will return true
even after all the related resources are released.isDisposing
in interface IoProcessor<S extends AbstractIoSession>
public final void dispose()
dispose
in interface IoProcessor<S extends AbstractIoSession>
Copyright © 2004-2019 Apache MINA Project. All Rights Reserved.