Class AsyncServer
- java.lang.Object
-
- org.apache.hc.core5.http.impl.bootstrap.AbstractConnectionInitiatorBase
-
- org.apache.hc.core5.http.impl.bootstrap.AsyncServer
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,ModalCloseable
,ConnectionAcceptor
,ConnectionInitiator
,IOReactor
,IOReactorService
- Direct Known Subclasses:
HttpAsyncServer
public class AsyncServer extends AbstractConnectionInitiatorBase implements IOReactorService, ConnectionAcceptor
Protocol agnostic server side I/O session handler.
-
-
Field Summary
Fields Modifier and Type Field Description private DefaultListeningIOReactor
ioReactor
-
Constructor Summary
Constructors Constructor Description AsyncServer(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig ioReactorConfig, Decorator<IOSession> ioSessionDecorator, Callback<java.lang.Exception> exceptionCallback, IOSessionListener sessionListener, 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.java.util.Set<ListenerEndpoint>
getEndpoints()
Returns a set of endpoints for this I/O reactor.(package private) ConnectionInitiator
getIOReactor()
IOReactorStatus
getStatus()
Returns the current status of the reactor.void
initiateShutdown()
Initiates shutdown of the reactor without blocking.java.util.concurrent.Future<ListenerEndpoint>
listen(java.net.SocketAddress address)
java.util.concurrent.Future<ListenerEndpoint>
listen(java.net.SocketAddress address, java.lang.Object attachment, FutureCallback<ListenerEndpoint> callback)
Opens a new listener endpoint with the given socket address.java.util.concurrent.Future<ListenerEndpoint>
listen(java.net.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.http.impl.bootstrap.AbstractConnectionInitiatorBase
connect
-
-
-
-
Field Detail
-
ioReactor
private final DefaultListeningIOReactor ioReactor
-
-
Constructor Detail
-
AsyncServer
@Internal public AsyncServer(IOEventHandlerFactory eventHandlerFactory, IOReactorConfig ioReactorConfig, Decorator<IOSession> ioSessionDecorator, Callback<java.lang.Exception> exceptionCallback, IOSessionListener sessionListener, Callback<IOSession> sessionShutdownCallback)
-
-
Method Detail
-
start
public void start()
Description copied from interface:IOReactorService
Starts I/O reactor.- Specified by:
start
in interfaceIOReactorService
-
getIOReactor
ConnectionInitiator getIOReactor()
- Specified by:
getIOReactor
in classAbstractConnectionInitiatorBase
-
listen
public java.util.concurrent.Future<ListenerEndpoint> listen(java.net.SocketAddress address, java.lang.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.
- Since:
- 5.1
-
listen
public java.util.concurrent.Future<ListenerEndpoint> listen(java.net.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
public java.util.concurrent.Future<ListenerEndpoint> listen(java.net.SocketAddress address)
-
pause
public void pause() throws java.io.IOException
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:
java.io.IOException
- in case of an I/O error.
-
resume
public void resume() throws java.io.IOException
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:
java.io.IOException
- in case of an I/O error.
-
getEndpoints
public java.util.Set<ListenerEndpoint> 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.
-
getStatus
public IOReactorStatus getStatus()
Description copied from interface:IOReactor
Returns the current status of the reactor.
-
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
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.- Specified by:
awaitShutdown
in interfaceIOReactor
- 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.- Specified by:
close
in interfaceIOReactor
- Specified by:
close
in interfaceModalCloseable
- Parameters:
closeMode
- How to close the receiver.
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Throws:
java.io.IOException
-
-