Package org.apache.hc.core5.reactor
Class DefaultConnectingIOReactor
- java.lang.Object
-
- org.apache.hc.core5.reactor.AbstractIOReactorBase
-
- org.apache.hc.core5.reactor.DefaultConnectingIOReactor
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,ModalCloseable
,ConnectionInitiator
,IOReactor
,IOReactorService
public class DefaultConnectingIOReactor extends AbstractIOReactorBase
Multi-core I/O reactor that can act asConnectionInitiator
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
Fields Modifier and Type Field Description private MultiCoreIOReactor
ioReactor
private static java.util.concurrent.ThreadFactory
THREAD_FACTORY
private int
workerCount
private SingleCoreIOReactor[]
workers
private IOWorkers.Selector
workerSelector
-
Constructor Summary
Constructors Constructor Description DefaultConnectingIOReactor(IOEventHandlerFactory eventHandlerFactory)
Creates an instance of DefaultConnectingIOReactor with default configuration.DefaultConnectingIOReactor(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig ioReactorConfig, java.util.concurrent.ThreadFactory threadFactory, Decorator<IOSession> ioSessionDecorator, Callback<java.lang.Exception> exceptionCallback, IOSessionListener sessionListener, Callback<IOSession> sessionShutdownCallback)
DefaultConnectingIOReactor(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig config, Callback<IOSession> sessionShutdownCallback)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
awaitShutdown(TimeValue waitTime)
Blocks for the given period of time in milliseconds awaiting the completion of the reactor shutdown.void
close()
void
close(CloseMode closeMode)
Shuts down the I/O reactor either gracefully or immediately.IOReactorStatus
getStatus()
Returns the current status of the reactor.(package private) IOWorkers.Selector
getWorkerSelector()
void
initiateShutdown()
Initiates shutdown of the reactor without blocking.void
start()
Starts I/O reactor.-
Methods inherited from class org.apache.hc.core5.reactor.AbstractIOReactorBase
connect
-
-
-
-
Field Detail
-
workerCount
private final int workerCount
-
workers
private final SingleCoreIOReactor[] workers
-
ioReactor
private final MultiCoreIOReactor ioReactor
-
workerSelector
private final IOWorkers.Selector workerSelector
-
THREAD_FACTORY
private static final java.util.concurrent.ThreadFactory THREAD_FACTORY
-
-
Constructor Detail
-
DefaultConnectingIOReactor
public DefaultConnectingIOReactor(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig ioReactorConfig, java.util.concurrent.ThreadFactory threadFactory, Decorator<IOSession> ioSessionDecorator, Callback<java.lang.Exception> exceptionCallback, IOSessionListener sessionListener, Callback<IOSession> sessionShutdownCallback)
-
DefaultConnectingIOReactor
public DefaultConnectingIOReactor(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig config, Callback<IOSession> sessionShutdownCallback)
-
DefaultConnectingIOReactor
public DefaultConnectingIOReactor(IOEventHandlerFactory eventHandlerFactory)
Creates an instance of DefaultConnectingIOReactor with default configuration.- Since:
- 5.0
-
-
Method Detail
-
start
public void start()
Description copied from interface:IOReactorService
Starts I/O reactor.
-
getStatus
public IOReactorStatus getStatus()
Description copied from interface:IOReactor
Returns the current status of the reactor.- Returns:
- reactor status.
-
getWorkerSelector
IOWorkers.Selector getWorkerSelector()
- Specified by:
getWorkerSelector
in classAbstractIOReactorBase
-
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
-
awaitShutdown
public void awaitShutdown(TimeValue waitTime) throws java.lang.InterruptedException
Description copied from interface:IOReactor
Blocks for the given period of time in milliseconds awaiting the completion of the reactor shutdown.- Parameters:
waitTime
- wait time.- Throws:
java.lang.InterruptedException
-
close
public void close(CloseMode closeMode)
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.- Parameters:
closeMode
- How to close the receiver.
-
close
public void close() throws java.io.IOException
- Throws:
java.io.IOException
-
-