public abstract class io.vertx.core.net.impl.TCPServerBase extends java.lang.Object implements io.vertx.core.Closeable, io.vertx.core.spi.metrics.MetricsProvider
{
private static final io.vertx.core.impl.logging.Logger log;
protected final io.vertx.core.Context creatingContext;
protected final io.vertx.core.impl.VertxInternal vertx;
protected final io.vertx.core.net.NetServerOptions options;
private io.netty.channel.EventLoop eventLoop;
private java.util.function.BiConsumer childHandler;
private io.vertx.core.Handler worker;
private volatile boolean listening;
private io.vertx.core.impl.ContextInternal listenContext;
private io.vertx.core.net.impl.TCPServerBase actualServer;
private io.vertx.core.net.impl.SSLHelper sslHelper;
private java.util.concurrent.atomic.AtomicReference sslChannelProvider;
private io.vertx.core.net.impl.ServerChannelLoadBalancer channelBalancer;
private io.vertx.core.Future bindFuture;
private java.util.Set servers;
private io.vertx.core.spi.metrics.TCPMetrics metrics;
private volatile int actualPort;
public void <init>(io.vertx.core.impl.VertxInternal, io.vertx.core.net.NetServerOptions)
{
io.vertx.core.net.NetServerOptions v, v;
io.vertx.core.impl.VertxInternal v;
io.vertx.core.net.impl.TCPServerBase v;
io.vertx.core.impl.ContextInternal v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v := @parameter: io.vertx.core.impl.VertxInternal;
v := @parameter: io.vertx.core.net.NetServerOptions;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.VertxInternal vertx> = v;
v = new io.vertx.core.net.NetServerOptions;
specialinvoke v.<io.vertx.core.net.NetServerOptions: void <init>(io.vertx.core.net.NetServerOptions)>(v);
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.NetServerOptions options> = v;
v = interfaceinvoke v.<io.vertx.core.impl.VertxInternal: io.vertx.core.impl.ContextInternal getContext()>();
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Context creatingContext> = v;
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>()>();
v.<io.vertx.core.net.impl.TCPServerBase: java.util.concurrent.atomic.AtomicReference sslChannelProvider> = v;
return;
}
public io.vertx.core.net.impl.SslContextProvider sslContextProvider()
{
io.vertx.core.net.impl.TCPServerBase v;
java.lang.Object v;
java.util.concurrent.atomic.AtomicReference v;
io.vertx.core.net.impl.SslContextProvider v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v = v.<io.vertx.core.net.impl.TCPServerBase: java.util.concurrent.atomic.AtomicReference sslChannelProvider>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
v = virtualinvoke v.<io.vertx.core.net.impl.SslChannelProvider: io.vertx.core.net.impl.SslContextProvider sslContextProvider()>();
goto label;
label:
v = null;
label:
return v;
}
public int actualPort()
{
int v;
io.vertx.core.net.impl.TCPServerBase v, v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer>;
if v == null goto label;
v = v.<io.vertx.core.net.impl.TCPServerBase: int actualPort>;
goto label;
label:
v = v.<io.vertx.core.net.impl.TCPServerBase: int actualPort>;
label:
return v;
}
protected abstract java.util.function.BiConsumer childHandler(io.vertx.core.impl.ContextInternal, io.vertx.core.net.SocketAddress);
protected io.vertx.core.net.impl.SSLHelper createSSLHelper()
{
io.vertx.core.net.NetServerOptions v;
io.vertx.core.net.impl.SSLHelper v;
io.vertx.core.net.impl.TCPServerBase v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v = new io.vertx.core.net.impl.SSLHelper;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.NetServerOptions options>;
specialinvoke v.<io.vertx.core.net.impl.SSLHelper: void <init>(io.vertx.core.net.TCPSSLOptions,java.util.List)>(v, null);
return v;
}
public io.vertx.core.Future updateSSLOptions(io.vertx.core.net.SSLOptions)
{
io.vertx.core.impl.ContextInternal v;
io.vertx.core.Future v, v, v;
io.vertx.core.net.impl.SSLHelper v;
io.vertx.core.net.SSLOptions v, v;
io.vertx.core.net.impl.TCPServerBase v;
io.vertx.core.Handler v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v := @parameter: io.vertx.core.net.SSLOptions;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.SSLHelper sslHelper>;
v = new io.vertx.core.net.SSLOptions;
specialinvoke v.<io.vertx.core.net.SSLOptions: void <init>(io.vertx.core.net.SSLOptions)>(v);
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext>;
v = virtualinvoke v.<io.vertx.core.net.impl.SSLHelper: io.vertx.core.Future buildChannelProvider(io.vertx.core.net.SSLOptions,io.vertx.core.impl.ContextInternal)>(v, v);
v = staticinvoke <io.vertx.core.net.impl.TCPServerBase$lambda_updateSSLOptions_0__1326: io.vertx.core.Handler bootstrap$(io.vertx.core.net.impl.TCPServerBase)>(v);
v = interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future andThen(io.vertx.core.Handler)>(v);
v = interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future mapEmpty()>();
return v;
}
public io.vertx.core.Future bind(io.vertx.core.net.SocketAddress)
{
io.vertx.core.impl.VertxInternal v;
io.vertx.core.net.impl.TCPServerBase v;
io.vertx.core.impl.ContextInternal v;
io.vertx.core.Future v, v;
io.vertx.core.net.SocketAddress v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v := @parameter: io.vertx.core.net.SocketAddress;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.VertxInternal vertx>;
v = interfaceinvoke v.<io.vertx.core.impl.VertxInternal: io.vertx.core.impl.ContextInternal getOrCreateContext()>();
v = specialinvoke v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Future listen(io.vertx.core.net.SocketAddress,io.vertx.core.impl.ContextInternal)>(v, v);
v = interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future map(java.lang.Object)>(v);
return v;
}
private synchronized io.vertx.core.Future listen(io.vertx.core.net.SocketAddress, io.vertx.core.impl.ContextInternal)
{
io.vertx.core.spi.metrics.TCPMetrics v;
java.util.Map v;
java.util.Set v, v;
io.vertx.core.net.NetServerOptions v;
java.lang.Throwable v;
io.vertx.core.net.SSLOptions v;
java.util.function.BiConsumer v, v;
java.lang.String v, v, v, v;
java.lang.IllegalStateException v;
boolean v, v, v, v;
io.netty.channel.EventLoop v, v, v;
io.vertx.core.Future v, v, v, v, v;
io.vertx.core.net.impl.ServerID v, v, v, v;
io.vertx.core.impl.ContextInternal v, v, v, v, v, v, v;
java.util.concurrent.atomic.AtomicReference v;
java.util.HashSet v;
int v, v, v, v, v, v, v, v;
io.vertx.core.net.SocketAddress v, v;
io.netty.channel.EventLoopGroup v;
io.vertx.core.impl.VertxInternal v, v;
io.vertx.core.impl.future.PromiseInternal v;
io.vertx.core.net.impl.SSLHelper v, v;
io.vertx.core.net.impl.TCPServerBase v, v, v;
io.vertx.core.net.impl.ServerChannelLoadBalancer v, v;
java.lang.Class v;
java.lang.Object v;
io.vertx.core.Handler v, v, v, v, v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v := @parameter: io.vertx.core.net.SocketAddress;
v := @parameter: io.vertx.core.impl.ContextInternal;
v = v.<io.vertx.core.net.impl.TCPServerBase: boolean listening>;
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Listen already called");
throw v;
label:
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext> = v;
v.<io.vertx.core.net.impl.TCPServerBase: boolean listening> = 1;
v = interfaceinvoke v.<io.vertx.core.impl.ContextInternal: io.netty.channel.EventLoop nettyEventLoop()>();
v.<io.vertx.core.net.impl.TCPServerBase: io.netty.channel.EventLoop eventLoop> = v;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.VertxInternal vertx>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = interfaceinvoke v.<io.vertx.core.impl.VertxInternal: java.util.Map sharedTCPServers(java.lang.Class)>(v);
entermonitor v;
label:
v = interfaceinvoke v.<io.vertx.core.net.SocketAddress: int port()>();
v.<io.vertx.core.net.impl.TCPServerBase: int actualPort> = v;
v = interfaceinvoke v.<io.vertx.core.net.SocketAddress: boolean isInetSocket()>();
if v == 0 goto label;
v = interfaceinvoke v.<io.vertx.core.net.SocketAddress: java.lang.String host()>();
goto label;
label:
v = interfaceinvoke v.<io.vertx.core.net.SocketAddress: java.lang.String path()>();
label:
v = v;
v = v.<io.vertx.core.net.impl.TCPServerBase: int actualPort>;
if v > 0 goto label;
v = interfaceinvoke v.<io.vertx.core.net.SocketAddress: boolean isDomainSocket()>();
if v == 0 goto label;
label:
v = new io.vertx.core.net.impl.ServerID;
v = v.<io.vertx.core.net.impl.TCPServerBase: int actualPort>;
specialinvoke v.<io.vertx.core.net.impl.ServerID: void <init>(int,java.lang.String)>(v, v);
v = v;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
v = 1;
v = v;
goto label;
label:
v = v.<io.vertx.core.net.impl.TCPServerBase: int actualPort>;
if v >= 0 goto label;
v = new io.vertx.core.net.impl.ServerID;
v = v.<io.vertx.core.net.impl.TCPServerBase: int actualPort>;
v = v.<io.vertx.core.net.impl.TCPServerBase: int actualPort>;
v = neg v;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001/\u0001");
specialinvoke v.<io.vertx.core.net.impl.ServerID: void <init>(int,java.lang.String)>(v, v);
v = v;
interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
v = 1;
v = interfaceinvoke v.<io.vertx.core.net.SocketAddress: java.lang.String host()>();
v = staticinvoke <io.vertx.core.net.SocketAddress: io.vertx.core.net.SocketAddress inetSocketAddress(int,java.lang.String)>(0, v);
goto label;
label:
v = new io.vertx.core.net.impl.ServerID;
v = v.<io.vertx.core.net.impl.TCPServerBase: int actualPort>;
specialinvoke v.<io.vertx.core.net.impl.ServerID: void <init>(int,java.lang.String)>(v, v);
v = v;
v = null;
v = 0;
v = v;
label:
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext>;
v = interfaceinvoke v.<io.vertx.core.impl.ContextInternal: io.vertx.core.impl.future.PromiseInternal promise()>();
if v != null goto label;
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer> = v;
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Future bindFuture> = v;
v = virtualinvoke v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.SSLHelper createSSLHelper()>();
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.SSLHelper sslHelper> = v;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext>;
v = virtualinvoke v.<io.vertx.core.net.impl.TCPServerBase: java.util.function.BiConsumer childHandler(io.vertx.core.impl.ContextInternal,io.vertx.core.net.SocketAddress)>(v, v);
v.<io.vertx.core.net.impl.TCPServerBase: java.util.function.BiConsumer childHandler> = v;
v = staticinvoke <io.vertx.core.net.impl.TCPServerBase$lambda_listen_1__1328: io.vertx.core.Handler bootstrap$(io.vertx.core.net.impl.TCPServerBase)>(v);
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Handler worker> = v;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v.<io.vertx.core.net.impl.TCPServerBase: java.util.Set servers> = v;
v = v.<io.vertx.core.net.impl.TCPServerBase: java.util.Set servers>;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = new io.vertx.core.net.impl.ServerChannelLoadBalancer;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.VertxInternal vertx>;
v = interfaceinvoke v.<io.vertx.core.impl.VertxInternal: io.netty.channel.EventLoopGroup getAcceptorEventLoopGroup()>();
v = interfaceinvoke v.<io.netty.channel.EventLoopGroup: io.netty.channel.EventLoop next()>();
specialinvoke v.<io.vertx.core.net.impl.ServerChannelLoadBalancer: void <init>(io.netty.util.concurrent.EventExecutor)>(v);
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.ServerChannelLoadBalancer channelBalancer> = v;
if v == 0 goto label;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext>;
interfaceinvoke v.<io.vertx.core.impl.ContextInternal: void addCloseHook(io.vertx.core.Closeable)>(v);
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.SSLHelper sslHelper>;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.NetServerOptions options>;
v = virtualinvoke v.<io.vertx.core.net.NetServerOptions: io.vertx.core.net.SSLOptions getSslOptions()>();
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext>;
v = virtualinvoke v.<io.vertx.core.net.impl.SSLHelper: io.vertx.core.Future buildChannelProvider(io.vertx.core.net.SSLOptions,io.vertx.core.impl.ContextInternal)>(v, v);
v = staticinvoke <io.vertx.core.net.impl.TCPServerBase$lambda_listen_4__1329: io.vertx.core.Handler bootstrap$(io.vertx.core.net.impl.TCPServerBase,io.vertx.core.net.SocketAddress,io.vertx.core.net.SocketAddress,java.lang.String,boolean,java.util.Map,io.vertx.core.net.impl.ServerID,io.vertx.core.impl.future.PromiseInternal)>(v, v, v, v, v, v, v, v);
interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future onComplete(io.vertx.core.Handler)>(v);
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Future bindFuture>;
v = staticinvoke <io.vertx.core.net.impl.TCPServerBase$lambda_listen_5__1330: io.vertx.core.Handler bootstrap$(io.vertx.core.net.impl.TCPServerBase,boolean,java.util.Map,io.vertx.core.net.impl.ServerID)>(v, v, v, v);
interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future onFailure(io.vertx.core.Handler)>(v);
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Future bindFuture>;
exitmonitor v;
label:
return v;
label:
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer> = v;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.spi.metrics.TCPMetrics metrics>;
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.spi.metrics.TCPMetrics metrics> = v;
v = v.<io.vertx.core.net.impl.TCPServerBase: java.util.concurrent.atomic.AtomicReference sslChannelProvider>;
v.<io.vertx.core.net.impl.TCPServerBase: java.util.concurrent.atomic.AtomicReference sslChannelProvider> = v;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext>;
v = virtualinvoke v.<io.vertx.core.net.impl.TCPServerBase: java.util.function.BiConsumer childHandler(io.vertx.core.impl.ContextInternal,io.vertx.core.net.SocketAddress)>(v, v);
v.<io.vertx.core.net.impl.TCPServerBase: java.util.function.BiConsumer childHandler> = v;
v = staticinvoke <io.vertx.core.net.impl.TCPServerBase$lambda_listen_6__1327: io.vertx.core.Handler bootstrap$(io.vertx.core.net.impl.TCPServerBase)>(v);
v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Handler worker> = v;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer>;
v = v.<io.vertx.core.net.impl.TCPServerBase: java.util.Set servers>;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer>;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.ServerChannelLoadBalancer channelBalancer>;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.netty.channel.EventLoop eventLoop>;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Handler worker>;
virtualinvoke v.<io.vertx.core.net.impl.ServerChannelLoadBalancer: void addWorker(io.netty.channel.EventLoop,io.vertx.core.Handler)>(v, v);
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext>;
interfaceinvoke v.<io.vertx.core.impl.ContextInternal: void addCloseHook(io.vertx.core.Closeable)>(v);
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Future bindFuture>;
interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future onComplete(io.vertx.core.Handler)>(v);
v = interfaceinvoke v.<io.vertx.core.impl.future.PromiseInternal: io.vertx.core.Future future()>();
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public boolean isListening()
{
boolean v;
io.vertx.core.net.impl.TCPServerBase v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v = v.<io.vertx.core.net.impl.TCPServerBase: boolean listening>;
return v;
}
protected io.vertx.core.spi.metrics.TCPMetrics createMetrics(io.vertx.core.net.SocketAddress)
{
io.vertx.core.net.SocketAddress v;
io.vertx.core.net.impl.TCPServerBase v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v := @parameter: io.vertx.core.net.SocketAddress;
return null;
}
private void applyConnectionOptions(boolean, io.netty.bootstrap.ServerBootstrap)
{
io.vertx.core.net.NetServerOptions v;
io.vertx.core.impl.VertxInternal v;
io.vertx.core.net.impl.TCPServerBase v;
io.netty.bootstrap.ServerBootstrap v;
io.vertx.core.spi.transport.Transport v;
boolean v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v := @parameter: boolean;
v := @parameter: io.netty.bootstrap.ServerBootstrap;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.VertxInternal vertx>;
v = interfaceinvoke v.<io.vertx.core.impl.VertxInternal: io.vertx.core.spi.transport.Transport transport()>();
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.NetServerOptions options>;
interfaceinvoke v.<io.vertx.core.spi.transport.Transport: void configure(io.vertx.core.net.NetServerOptions,boolean,io.netty.bootstrap.ServerBootstrap)>(v, v, v);
return;
}
public boolean isMetricsEnabled()
{
io.vertx.core.spi.metrics.TCPMetrics v;
boolean v;
io.vertx.core.net.impl.TCPServerBase v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.spi.metrics.TCPMetrics metrics>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public synchronized io.vertx.core.spi.metrics.TCPMetrics getMetrics()
{
io.vertx.core.net.impl.TCPServerBase v, v, v;
io.vertx.core.spi.metrics.TCPMetrics v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer>;
if v == null goto label;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer>;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.spi.metrics.TCPMetrics metrics>;
goto label;
label:
v = null;
label:
return v;
}
public synchronized void close(io.vertx.core.Promise)
{
java.lang.Throwable v;
io.vertx.core.impl.VertxInternal v;
io.vertx.core.Promise v;
io.vertx.core.impl.ContextInternal v;
io.netty.channel.EventLoop v;
io.vertx.core.net.impl.TCPServerBase v, v, v;
java.util.Map v;
io.vertx.core.net.impl.ServerChannelLoadBalancer v;
java.lang.Class v;
io.vertx.core.Handler v;
boolean v, v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v := @parameter: io.vertx.core.Promise;
v = v.<io.vertx.core.net.impl.TCPServerBase: boolean listening>;
if v != 0 goto label;
interfaceinvoke v.<io.vertx.core.Promise: void complete()>();
return;
label:
v.<io.vertx.core.net.impl.TCPServerBase: boolean listening> = 0;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.ContextInternal listenContext>;
interfaceinvoke v.<io.vertx.core.impl.ContextInternal: void removeCloseHook(io.vertx.core.Closeable)>(v);
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.VertxInternal vertx>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = interfaceinvoke v.<io.vertx.core.impl.VertxInternal: java.util.Map sharedTCPServers(java.lang.Class)>(v);
entermonitor v;
label:
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer>;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.ServerChannelLoadBalancer channelBalancer>;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.netty.channel.EventLoop eventLoop>;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Handler worker>;
virtualinvoke v.<io.vertx.core.net.impl.ServerChannelLoadBalancer: boolean removeWorker(io.netty.channel.EventLoop,io.vertx.core.Handler)>(v, v);
v = virtualinvoke v.<io.vertx.core.net.impl.ServerChannelLoadBalancer: boolean hasHandlers()>();
if v == 0 goto label;
interfaceinvoke v.<io.vertx.core.Promise: void complete()>();
goto label;
label:
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.TCPServerBase actualServer>;
specialinvoke v.<io.vertx.core.net.impl.TCPServerBase: void actualClose(io.vertx.core.Promise)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void actualClose(io.vertx.core.Promise)
{
io.vertx.core.Promise v;
io.vertx.core.net.impl.TCPServerBase v;
io.vertx.core.net.impl.ServerChannelLoadBalancer v;
io.vertx.core.Handler v;
io.vertx.core.Future v;
v := @this: io.vertx.core.net.impl.TCPServerBase;
v := @parameter: io.vertx.core.Promise;
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.net.impl.ServerChannelLoadBalancer channelBalancer>;
virtualinvoke v.<io.vertx.core.net.impl.ServerChannelLoadBalancer: void close()>();
v = v.<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.Future bindFuture>;
v = staticinvoke <io.vertx.core.net.impl.TCPServerBase$lambda_actualClose_8__1331: io.vertx.core.Handler bootstrap$(io.vertx.core.net.impl.TCPServerBase,io.vertx.core.Promise)>(v, v);
interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future onComplete(io.vertx.core.Handler)>(v);
return;
}
public abstract io.vertx.core.Future close();
static void <clinit>()
{
io.vertx.core.impl.logging.Logger v;
v = staticinvoke <io.vertx.core.impl.logging.LoggerFactory: io.vertx.core.impl.logging.Logger getLogger(java.lang.Class)>(class "Lio/vertx/core/net/impl/NetServerImpl;");
<io.vertx.core.net.impl.TCPServerBase: io.vertx.core.impl.logging.Logger log> = v;
return;
}
}