S
- the type of the IoSession
to be managed by the specified
IoProcessor
.public class SimpleIoProcessorPool<S extends AbstractIoSession> extends 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(Class<? extends IoProcessor<S>> processorType)
Creates a new instance of SimpleIoProcessorPool with a default
size of NbCPUs +1.
|
SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType,
Executor executor)
Creates a new instance of SimpleIoProcessorPool with an executor
|
SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType,
Executor executor,
int size,
SelectorProvider selectorProvider)
Creates a new instance of SimpleIoProcessorPool with an executor
|
SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType,
int size)
Creates a new instance of SimpleIoProcessorPool with a defined
number of IoProcessors in the pool
|
SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType,
int size,
SelectorProvider selectorProvider)
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() |
boolean |
isDisposing() |
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 |
void |
write(S session,
WriteRequest writeRequest)
Writes the WriteRequest for the specified
session . |
public SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType)
processorType
- The type of IoProcessor to usepublic SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType, int size)
processorType
- The type of IoProcessor to usesize
- The number of IoProcessor in the poolpublic SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType, int size, SelectorProvider selectorProvider)
processorType
- The type of IoProcessor to usesize
- The number of IoProcessor in the poolselectorProvider
- The SelectorProvider to usepublic SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType, Executor executor)
processorType
- The type of IoProcessor to useexecutor
- The Executor
public SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType, Executor executor, int size, SelectorProvider selectorProvider)
processorType
- The type of IoProcessor to useexecutor
- The Executor
size
- The number of IoProcessor in the poolselectorProvider
- The SelectorProvider to usedpublic 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>
session
- The added sessionpublic final void flush(S session)
session
.flush
in interface IoProcessor<S extends AbstractIoSession>
session
- The session we want the message to be writtenpublic final void write(S session, WriteRequest writeRequest)
session
.write
in interface IoProcessor<S extends AbstractIoSession>
session
- The session we want the message to be writtenwriteRequest
- the WriteRequest to writepublic 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>
session
- The session to be removedpublic final void updateTrafficControl(S session)
session
depending of the
IoSession.isReadSuspended()
and IoSession.isWriteSuspended()
flagsupdateTrafficControl
in interface IoProcessor<S extends AbstractIoSession>
session
- The session to be updatedpublic boolean isDisposed()
isDisposed
in interface IoProcessor<S extends AbstractIoSession>
true
if and if only all resources of this processor
have been disposed.public boolean isDisposing()
isDisposing
in interface IoProcessor<S extends AbstractIoSession>
true
if and if only IoProcessor.dispose()
method has
been called. Please note that this method will return true
even after all the related resources are released.public final void dispose()
dispose
in interface IoProcessor<S extends AbstractIoSession>
Copyright © 2004–2025 Apache MINA Project. All rights reserved.