Class SingleCoreIOReactor
- java.lang.Object
-
- org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor
-
- org.apache.hc.core5.reactor.SingleCoreIOReactor
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,ModalCloseable,ConnectionInitiator,IOReactor
class SingleCoreIOReactor extends AbstractSingleCoreIOReactor implements ConnectionInitiator
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Queue<ChannelEntry>channelQueueprivate java.util.Queue<InternalDataChannel>closedSessionsprivate IOEventHandlerFactoryeventHandlerFactoryprivate Decorator<IOSession>ioSessionDecoratorprivate longlastTimeoutCheckMillisprivate static intMAX_CHANNEL_REQUESTSprivate IOReactorConfigreactorConfigprivate java.util.Queue<IOSessionRequest>requestQueueprivate longselectTimeoutMillisprivate IOSessionListenersessionListenerprivate Callback<IOSession>sessionShutdownCallbackprivate java.util.concurrent.atomic.AtomicBooleanshutdownInitiated-
Fields inherited from class org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor
selector
-
-
Constructor Summary
Constructors Constructor Description SingleCoreIOReactor(Callback<java.lang.Exception> exceptionCallback, IOEventHandlerFactory eventHandlerFactory, IOReactorConfig reactorConfig, Decorator<IOSession> ioSessionDecorator, IOSessionListener sessionListener, Callback<IOSession> sessionShutdownCallback)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcheckTimeout(java.nio.channels.SelectionKey key, long nowMillis)private voidclosePendingChannels()private voidclosePendingConnectionRequests()java.util.concurrent.Future<IOSession>connect(NamedEndpoint remoteEndpoint, java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, Timeout timeout, java.lang.Object attachment, FutureCallback<IOSession> callback)Requests a connection to a remote host.(package private) voiddoExecute()(package private) voiddoTerminate()(package private) voidenqueueChannel(ChannelEntry entry)private voidinitiateSessionShutdown()private voidprepareSocket(java.net.Socket socket)private voidprocessClosedSessions()private voidprocessConnectionRequest(java.nio.channels.SocketChannel socketChannel, IOSessionRequest sessionRequest)private voidprocessEvents(java.util.Set<java.nio.channels.SelectionKey> selectedKeys)private voidprocessPendingChannels()private voidprocessPendingConnectionRequests()private voidvalidateActiveChannels()private voidvalidateAddress(java.net.SocketAddress address)-
Methods inherited from class org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor
awaitShutdown, close, close, close, execute, getStatus, initiateShutdown, logException, toString
-
-
-
-
Field Detail
-
MAX_CHANNEL_REQUESTS
private static final int MAX_CHANNEL_REQUESTS
- See Also:
- Constant Field Values
-
eventHandlerFactory
private final IOEventHandlerFactory eventHandlerFactory
-
reactorConfig
private final IOReactorConfig reactorConfig
-
sessionListener
private final IOSessionListener sessionListener
-
closedSessions
private final java.util.Queue<InternalDataChannel> closedSessions
-
channelQueue
private final java.util.Queue<ChannelEntry> channelQueue
-
requestQueue
private final java.util.Queue<IOSessionRequest> requestQueue
-
shutdownInitiated
private final java.util.concurrent.atomic.AtomicBoolean shutdownInitiated
-
selectTimeoutMillis
private final long selectTimeoutMillis
-
lastTimeoutCheckMillis
private volatile long lastTimeoutCheckMillis
-
-
Constructor Detail
-
SingleCoreIOReactor
SingleCoreIOReactor(Callback<java.lang.Exception> exceptionCallback, IOEventHandlerFactory eventHandlerFactory, IOReactorConfig reactorConfig, Decorator<IOSession> ioSessionDecorator, IOSessionListener sessionListener, Callback<IOSession> sessionShutdownCallback)
-
-
Method Detail
-
enqueueChannel
void enqueueChannel(ChannelEntry entry) throws IOReactorShutdownException
- Throws:
IOReactorShutdownException
-
doTerminate
void doTerminate()
- Specified by:
doTerminatein classAbstractSingleCoreIOReactor
-
doExecute
void doExecute() throws java.io.IOException- Specified by:
doExecutein classAbstractSingleCoreIOReactor- Throws:
java.io.IOException
-
initiateSessionShutdown
private void initiateSessionShutdown()
-
validateActiveChannels
private void validateActiveChannels()
-
processEvents
private void processEvents(java.util.Set<java.nio.channels.SelectionKey> selectedKeys)
-
processPendingChannels
private void processPendingChannels() throws java.io.IOException- Throws:
java.io.IOException
-
processClosedSessions
private void processClosedSessions()
-
checkTimeout
private void checkTimeout(java.nio.channels.SelectionKey key, long nowMillis)
-
connect
public java.util.concurrent.Future<IOSession> connect(NamedEndpoint remoteEndpoint, java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, Timeout timeout, java.lang.Object attachment, FutureCallback<IOSession> callback) throws IOReactorShutdownException
Description copied from interface:ConnectionInitiatorRequests a connection to a remote host.Opening a connection to a remote host usually tends to be a time consuming process and may take a while to complete. One can monitor and control the process of session initialization by means of the
Futureinterface.There are several parameters one can use to exert a greater control over the process of session initialization:
A non-null local socket address parameter can be used to bind the socket to a specific local address.
An attachment object can added to the new session's context upon initialization. This object can be used to pass an initial processing state to the protocol handler.
It is often desirable to be able to react to the completion of a session request asynchronously without having to wait for it, blocking the current thread of execution. One can optionally provide an implementation
FutureCallbackinstance to get notified of events related to session requests, such as request completion, cancellation, failure or timeout.- Specified by:
connectin interfaceConnectionInitiator- Parameters:
remoteEndpoint- name of the remote host.remoteAddress- remote socket address.localAddress- local socket address. Can benull, in which can the default local address and a random port will be used.timeout- connect timeout.attachment- the attachment object. Can benull.callback- interface. Can benull.- Returns:
- session request object.
- Throws:
IOReactorShutdownException
-
prepareSocket
private void prepareSocket(java.net.Socket socket) throws java.io.IOException- Throws:
java.io.IOException
-
validateAddress
private void validateAddress(java.net.SocketAddress address) throws java.net.UnknownHostException- Throws:
java.net.UnknownHostException
-
processPendingConnectionRequests
private void processPendingConnectionRequests()
-
processConnectionRequest
private void processConnectionRequest(java.nio.channels.SocketChannel socketChannel, IOSessionRequest sessionRequest) throws java.io.IOException- Throws:
java.io.IOException
-
closePendingChannels
private void closePendingChannels()
-
closePendingConnectionRequests
private void closePendingConnectionRequests()
-
-