Package io.activej.net
Class AbstractReactiveServer
java.lang.Object
io.activej.reactor.AbstractNioReactive
io.activej.net.AbstractReactiveServer
- All Implemented Interfaces:
ReactiveServer,WorkerServer,io.activej.reactor.jmx.ReactiveJmxBean,io.activej.reactor.jmx.ReactiveJmxBeanWithStats,io.activej.reactor.NioReactive,io.activej.reactor.Reactive
- Direct Known Subclasses:
PrimaryServer,SimpleServer
public abstract class AbstractReactiveServer
extends io.activej.reactor.AbstractNioReactive
implements ReactiveServer, WorkerServer, io.activej.reactor.jmx.ReactiveJmxBeanWithStats
This is an implementation of
ReactiveServer.
It is a non-blocking server which works on top of the NIO reactor.
Thus, it runs in the NIO reactor, and all events are fired on that reactor.
This is simply a higher-level wrapper around NioReactor.listen(java.net.InetSocketAddress, io.activej.reactor.net.ServerSocketSettings, java.util.function.Consumer<java.nio.channels.SocketChannel>) call.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceclassAbstractReactiveServer.Builder<Self extends AbstractReactiveServer.Builder<Self,S>, S extends AbstractReactiveServer> -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected List<InetSocketAddress>protected org.slf4j.Loggerprotected io.activej.reactor.net.ServerSocketSettingsprotected io.activej.reactor.net.SocketSettingsprotected List<InetSocketAddress>Fields inherited from class io.activej.reactor.AbstractNioReactive
reactor -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractReactiveServer(io.activej.reactor.nio.NioReactor reactor) -
Method Summary
Modifier and TypeMethodDescriptionfinal Promise<?>close()Closes the server.final Future<?>protected voidfinal voiddoAccept(SocketChannel socketChannel, InetSocketAddress localAddress, InetSocketAddress remoteSocketAddress, boolean ssl, io.activej.reactor.net.SocketSettings socketSettings) final @Nullable io.activej.jmx.stats.EventStatsfinal @Nullable io.activej.jmx.stats.EventStatsThe IP socket addressesthisserver is bound to after it started listening.final @Nullable io.activej.jmx.stats.EventStatsio.activej.reactor.net.ServerSocketSettingsprotected TcpSocket.InspectorgetSocketInspector(InetAddress remoteAddress, InetSocketAddress localAddress, boolean ssl) io.activej.reactor.net.SocketSettingsfinal TcpSocket.JmxInspectorfinal TcpSocket.JmxInspectorThe IP socket addressesthisserver is bound to with SSL after it started listening.protected WorkerServerfinal booleanfinal voidlisten()Begins listening asynchronously for incoming connections.protected voidonAccept(SocketChannel socketChannel, InetSocketAddress localAddress, InetAddress remoteAddress, boolean ssl) protected voidonClose(SettableCallback<Void> cb) protected voidonFilteredAccept(SocketChannel socketChannel, InetSocketAddress localAddress, InetAddress remoteAddress, boolean ssl) protected voidonListen()protected abstract voidserve(ITcpSocket socket, InetAddress remoteAddress) toString()Methods inherited from class io.activej.reactor.AbstractNioReactive
getReactorMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface io.activej.reactor.NioReactive
getReactorMethods inherited from interface io.activej.reactor.jmx.ReactiveJmxBeanWithStats
getSmoothingWindow, resetStats, setSmoothingWindow
-
Field Details
-
logger
protected org.slf4j.Logger logger -
serverSocketSettings
protected io.activej.reactor.net.ServerSocketSettings serverSocketSettings -
socketSettings
protected io.activej.reactor.net.SocketSettings socketSettings -
acceptOnce
protected boolean acceptOnce -
listenAddresses
-
sslListenAddresses
-
-
Constructor Details
-
AbstractReactiveServer
protected AbstractReactiveServer(io.activej.reactor.nio.NioReactor reactor)
-
-
Method Details
-
serve
-
onListen
protected void onListen() -
onClose
-
onAccept
protected void onAccept(SocketChannel socketChannel, InetSocketAddress localAddress, InetAddress remoteAddress, boolean ssl) -
onFilteredAccept
protected void onFilteredAccept(SocketChannel socketChannel, InetSocketAddress localAddress, InetAddress remoteAddress, boolean ssl) -
listen
Begins listening asynchronously for incoming connections. Creates anServerSocketChannelfor each listening address and registers them inNIO reactorselector. Reactor then asynchronously listens for network events and dispatches them to their listeners (us).- Specified by:
listenin interfaceReactiveServer- Throws:
IOException- if the socket can not be created.
-
close
Description copied from interface:ReactiveServerCloses the server. Any open channels will be closed.- Specified by:
closein interfaceReactiveServer
-
closeFuture
-
isRunning
public final boolean isRunning() -
closeServerSockets
protected void closeServerSockets() -
getWorkerServer
-
getSocketInspector
protected TcpSocket.Inspector getSocketInspector(InetAddress remoteAddress, InetSocketAddress localAddress, boolean ssl) -
doAccept
public final void doAccept(SocketChannel socketChannel, InetSocketAddress localAddress, InetSocketAddress remoteSocketAddress, boolean ssl, io.activej.reactor.net.SocketSettings socketSettings) - Specified by:
doAcceptin interfaceWorkerServer
-
getServerSocketSettings
public io.activej.reactor.net.ServerSocketSettings getServerSocketSettings() -
getListenAddresses
-
getSslListenAddresses
-
getBoundAddresses
The IP socket addressesthisserver is bound to after it started listening. Use this method to get the actual port numbers in case anylisten addressuses port 0. -
getSslBoundAddresses
The IP socket addressesthisserver is bound to with SSL after it started listening. Use this method to get the actual port numbers in case anySSL listen addressuses port 0. -
getSocketSettings
public io.activej.reactor.net.SocketSettings getSocketSettings() -
getAccepts
@Nullable public final @Nullable io.activej.jmx.stats.EventStats getAccepts() -
getAcceptsSsl
@Nullable public final @Nullable io.activej.jmx.stats.EventStats getAcceptsSsl() -
getFilteredAccepts
@Nullable public final @Nullable io.activej.jmx.stats.EventStats getFilteredAccepts() -
getSocketStats
-
getSocketStatsSsl
-
toString
-