Package org.apache.hc.core5.reactor
Class DefaultListeningIOReactor
java.lang.Object
org.apache.hc.core5.reactor.AbstractIOReactorBase
org.apache.hc.core5.reactor.DefaultListeningIOReactor
- All Implemented Interfaces:
Closeable
,AutoCloseable
,ModalCloseable
,ConnectionAcceptor
,ConnectionInitiator
,IOReactor
,IOReactorService
Multi-core I/O reactor that can act as both
ConnectionInitiator
and ConnectionAcceptor
. Internally this I/O reactor distributes newly created
I/O session equally across multiple I/O worker threads for a more optimal resource
utilization and a better I/O performance. Usually it is recommended to have
one worker I/O reactor per physical CPU core.- Since:
- 4.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final ThreadFactory
private final MultiCoreIOReactor
private final SingleCoreListeningIOReactor
private static final ThreadFactory
private final int
private final SingleCoreIOReactor[]
private final IOWorkers.Selector
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultListeningIOReactor
(IOEventHandlerFactory eventHandlerFactory) Creates an instance of DefaultListeningIOReactor with default configuration.DefaultListeningIOReactor
(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig ioReactorConfig, ThreadFactory dispatchThreadFactory, ThreadFactory listenerThreadFactory, Decorator<IOSession> ioSessionDecorator, Callback<Exception> exceptionCallback, IOSessionListener sessionListener, Callback<IOSession> sessionShutdownCallback) Creates an instance of DefaultListeningIOReactor with the given configuration.DefaultListeningIOReactor
(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig config, Callback<IOSession> sessionShutdownCallback) Creates an instance of DefaultListeningIOReactor with the given configuration. -
Method Summary
Modifier and TypeMethodDescriptionvoid
awaitShutdown
(TimeValue waitTime) Blocks for the given period of time in milliseconds awaiting the completion of the reactor shutdown.void
close()
void
Shuts down the I/O reactor either gracefully or immediately.private void
enqueueChannel
(ChannelEntry entry) Returns a set of endpoints for this I/O reactor.Returns the current status of the reactor.(package private) IOWorkers.Selector
void
Initiates shutdown of the reactor without blocking.listen
(SocketAddress address) listen
(SocketAddress address, Object attachment, FutureCallback<ListenerEndpoint> callback) Opens a new listener endpoint with the given socket address.listen
(SocketAddress address, FutureCallback<ListenerEndpoint> callback) Opens a new listener endpoint with the given socket address.void
pause()
Suspends the I/O reactor preventing it from accepting new connections on all active endpoints.void
resume()
Resumes the I/O reactor restoring its ability to accept incoming connections on all active endpoints.void
start()
Starts I/O reactor.Methods inherited from class org.apache.hc.core5.reactor.AbstractIOReactorBase
connect
-
Field Details
-
DISPATCH_THREAD_FACTORY
-
LISTENER_THREAD_FACTORY
-
workerCount
private final int workerCount -
workers
-
listener
-
ioReactor
-
workerSelector
-
-
Constructor Details
-
DefaultListeningIOReactor
public DefaultListeningIOReactor(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig ioReactorConfig, ThreadFactory dispatchThreadFactory, ThreadFactory listenerThreadFactory, Decorator<IOSession> ioSessionDecorator, Callback<Exception> exceptionCallback, IOSessionListener sessionListener, Callback<IOSession> sessionShutdownCallback) Creates an instance of DefaultListeningIOReactor with the given configuration.- Parameters:
eventHandlerFactory
- the factory to create I/O event handlers.ioReactorConfig
- I/O reactor configuration.listenerThreadFactory
- the factory to create listener thread. Can benull
.- Since:
- 5.0
-
DefaultListeningIOReactor
public DefaultListeningIOReactor(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig config, Callback<IOSession> sessionShutdownCallback) Creates an instance of DefaultListeningIOReactor with the given configuration.- Parameters:
eventHandlerFactory
- the factory to create I/O event handlers.config
- I/O reactor configuration. Can benull
.- Since:
- 5.0
-
DefaultListeningIOReactor
Creates an instance of DefaultListeningIOReactor with default configuration.- Parameters:
eventHandlerFactory
- the factory to create I/O event handlers.- Since:
- 5.0
-
-
Method Details
-
start
public void start()Description copied from interface:IOReactorService
Starts I/O reactor.- Specified by:
start
in interfaceIOReactorService
-
listen
public Future<ListenerEndpoint> listen(SocketAddress address, Object attachment, FutureCallback<ListenerEndpoint> callback) Description copied from interface:ConnectionAcceptor
Opens a new listener endpoint with the given socket address. Once the endpoint is fully initialized it starts accepting incoming connections and propagates I/O activity notifications to the I/O event dispatcher.- Specified by:
listen
in interfaceConnectionAcceptor
- Parameters:
address
- the socket address to listen on.attachment
- the attachment object.callback
- the result callback.- Returns:
- listener endpoint.
-
listen
public Future<ListenerEndpoint> listen(SocketAddress address, FutureCallback<ListenerEndpoint> callback) Description copied from interface:ConnectionAcceptor
Opens a new listener endpoint with the given socket address. Once the endpoint is fully initialized it starts accepting incoming connections and propagates I/O activity notifications to the I/O event dispatcher.- Specified by:
listen
in interfaceConnectionAcceptor
- Parameters:
address
- the socket address to listen on.callback
- the result callback.- Returns:
- listener endpoint.
-
listen
-
getEndpoints
Description copied from interface:ConnectionAcceptor
Returns a set of endpoints for this I/O reactor.- Specified by:
getEndpoints
in interfaceConnectionAcceptor
- Returns:
- set of endpoints.
-
pause
Description copied from interface:ConnectionAcceptor
Suspends the I/O reactor preventing it from accepting new connections on all active endpoints.- Specified by:
pause
in interfaceConnectionAcceptor
- Throws:
IOException
- in case of an I/O error.
-
resume
Description copied from interface:ConnectionAcceptor
Resumes the I/O reactor restoring its ability to accept incoming connections on all active endpoints.- Specified by:
resume
in interfaceConnectionAcceptor
- Throws:
IOException
- in case of an I/O error.
-
getStatus
Description copied from interface:IOReactor
Returns the current status of the reactor. -
getWorkerSelector
IOWorkers.Selector getWorkerSelector()- Specified by:
getWorkerSelector
in classAbstractIOReactorBase
-
enqueueChannel
-
initiateShutdown
public void initiateShutdown()Description copied from interface:IOReactor
Initiates shutdown of the reactor without blocking. The reactor is expected to terminate all active connections, to shut down itself and to release system resources it currently holds- Specified by:
initiateShutdown
in interfaceIOReactor
-
awaitShutdown
Description copied from interface:IOReactor
Blocks for the given period of time in milliseconds awaiting the completion of the reactor shutdown.- Specified by:
awaitShutdown
in interfaceIOReactor
- Parameters:
waitTime
- wait time.- Throws:
InterruptedException
-
close
Description copied from interface:IOReactor
Shuts down the I/O reactor either gracefully or immediately. During graceful shutdown individual I/O sessions should be informed about imminent termination and be given a grace period to complete the ongoing I/O sessions. During immediate shutdown all ongoing I/O sessions get aborted immediately.- Specified by:
close
in interfaceIOReactor
- Specified by:
close
in interfaceModalCloseable
- Parameters:
closeMode
- How to close the receiver.
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-