public class io.vertx.core.http.impl.ServerWebSocketImpl extends io.vertx.core.http.impl.WebSocketImplBase implements io.vertx.core.http.ServerWebSocket
{
private final io.vertx.core.http.impl.Http1xServerConnection conn;
private final long closingTimeoutMS;
private final java.lang.String scheme;
private final java.lang.String host;
private final java.lang.String uri;
private final java.lang.String path;
private final java.lang.String query;
private final io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker handshaker;
private io.vertx.core.http.impl.Http1xServerRequest request;
private java.lang.Integer status;
private io.vertx.core.Promise handshakePromise;
void <init>(io.vertx.core.impl.ContextInternal, io.vertx.core.http.impl.Http1xServerConnection, boolean, long, io.vertx.core.http.impl.Http1xServerRequest, io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker, int, int, boolean)
{
io.vertx.core.MultiMap v;
io.vertx.core.impl.ContextInternal v;
long v, v;
io.vertx.core.http.impl.Http1xServerRequest v;
byte v;
int v, v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.String v, v, v, v, v;
boolean v, v;
io.vertx.core.http.impl.Http1xServerConnection v;
io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: io.vertx.core.impl.ContextInternal;
v := @parameter: io.vertx.core.http.impl.Http1xServerConnection;
v := @parameter: boolean;
v := @parameter: long;
v := @parameter: io.vertx.core.http.impl.Http1xServerRequest;
v := @parameter: io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
specialinvoke v.<io.vertx.core.http.impl.WebSocketImplBase: void <init>(io.vertx.core.impl.ContextInternal,io.vertx.core.http.impl.Http1xConnectionBase,boolean,int,int,boolean)>(v, v, v, v, v, v);
v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn> = v;
v = v cmp 0L;
if v < 0 goto label;
v = v * 1000L;
goto label;
label:
v = -1L;
label:
v.<io.vertx.core.http.impl.ServerWebSocketImpl: long closingTimeoutMS> = v;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerRequest: java.lang.String scheme()>();
v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String scheme> = v;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerRequest: java.lang.String host()>();
v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String host> = v;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerRequest: java.lang.String uri()>();
v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String uri> = v;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerRequest: java.lang.String path()>();
v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String path> = v;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerRequest: java.lang.String query()>();
v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String query> = v;
v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerRequest request> = v;
v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker handshaker> = v;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerRequest: io.vertx.core.MultiMap headers()>();
virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: void headers(io.vertx.core.MultiMap)>(v);
return;
}
public java.lang.String scheme()
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.String v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String scheme>;
return v;
}
public java.lang.String host()
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.String v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String host>;
return v;
}
public java.lang.String uri()
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.String v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String uri>;
return v;
}
public java.lang.String path()
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.String v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String path>;
return v;
}
public java.lang.String query()
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.String v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.String query>;
return v;
}
public void accept()
{
java.lang.IllegalStateException v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.Boolean v, v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v = virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Boolean tryHandshake(int)>(101);
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
if v == v goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("WebSocket already rejected");
throw v;
label:
return;
}
public void reject()
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: void reject(int)>(502);
return;
}
public void reject(int)
{
java.lang.IllegalStateException v;
int v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.Boolean v, v;
java.lang.IllegalArgumentException v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: int;
if v != 101 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Invalid WebSocket rejection status code: 101");
throw v;
label:
v = virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Boolean tryHandshake(int)>(v);
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
if v == v goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Cannot reject WebSocket, it has already been written to");
throw v;
label:
return;
}
public io.vertx.core.Future close(short, java.lang.String)
{
java.lang.Throwable v;
io.vertx.core.Promise v, v;
io.vertx.core.http.impl.Http1xServerConnection v;
io.vertx.core.Future v;
java.lang.Integer v, v;
short v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.String v;
io.vertx.core.Handler v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: short;
v := @parameter: java.lang.String;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
entermonitor v;
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Integer status>;
if v != null goto label;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.Promise handshakePromise>;
if v != null goto label;
virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Boolean tryHandshake(int)>(101);
goto label;
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.Promise handshakePromise>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(101);
interfaceinvoke v.<io.vertx.core.Promise: boolean tryComplete(java.lang.Object)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = specialinvoke v.<io.vertx.core.http.impl.WebSocketImplBase: io.vertx.core.Future close(short,java.lang.String)>(v, v);
v = staticinvoke <io.vertx.core.http.impl.ServerWebSocketImpl$lambda_close_0__1141: io.vertx.core.Handler bootstrap$(io.vertx.core.http.impl.ServerWebSocketImpl)>(v);
interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future onComplete(io.vertx.core.Handler)>(v);
return v;
catch java.lang.Throwable from label to label with label;
}
public io.vertx.core.Future writeFrame(io.vertx.core.http.WebSocketFrame)
{
java.lang.Throwable v;
java.lang.IllegalStateException v, v;
io.vertx.core.http.impl.Http1xServerConnection v;
io.vertx.core.Future v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.Boolean v;
io.vertx.core.http.WebSocketFrame v;
boolean v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: io.vertx.core.http.WebSocketFrame;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
entermonitor v;
label:
v = specialinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Boolean checkAccept()>();
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Cannot write to WebSocket, it is pending accept or reject");
throw v;
label:
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v != 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Cannot write to WebSocket, it has been rejected");
throw v;
label:
v = specialinvoke v.<io.vertx.core.http.impl.WebSocketImplBase: io.vertx.core.Future writeFrame(io.vertx.core.http.WebSocketFrame)>(v);
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
private java.lang.Boolean checkAccept()
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.Boolean v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v = virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Boolean tryHandshake(int)>(101);
return v;
}
private void handleHandshake(int)
{
java.lang.Throwable v;
io.netty.handler.codec.http.HttpResponseStatus v;
io.vertx.core.http.impl.Http1xServerConnection v, v;
java.lang.Integer v, v;
io.netty.channel.Channel v;
int v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: int;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
entermonitor v;
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Integer status>;
if v != null goto label;
if v != 101 goto label;
specialinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: void doHandshake()>();
goto label;
label:
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Integer status> = v;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerConnection: io.netty.channel.Channel channel()>();
v = staticinvoke <io.netty.handler.codec.http.HttpResponseStatus: io.netty.handler.codec.http.HttpResponseStatus valueOf(int)>(v);
staticinvoke <io.vertx.core.http.impl.HttpUtils: void sendError(io.netty.channel.Channel,io.netty.handler.codec.http.HttpResponseStatus)>(v, 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 doHandshake()
{
java.lang.Throwable v;
io.vertx.core.impl.ContextInternal v;
java.lang.Integer v;
io.vertx.core.http.impl.Http1xServerResponse v;
io.vertx.core.eventbus.EventBus v;
io.vertx.core.http.impl.Http1xServerRequest v, v;
int v, v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.String v;
io.netty.handler.codec.http.HttpRequest v;
io.vertx.core.impl.VertxInternal v;
io.netty.handler.codec.http.HttpResponseStatus v, v;
io.netty.channel.ChannelPipeline v;
io.vertx.core.http.impl.Http1xServerConnection v, v;
java.lang.Exception v;
io.netty.channel.Channel v;
io.vertx.core.http.HttpServerResponse v;
io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker v, v;
io.netty.channel.ChannelHandler v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerConnection: io.netty.channel.Channel channel()>();
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerRequest request>;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerRequest: io.vertx.core.http.impl.Http1xServerResponse response()>();
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker handshaker>;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerRequest request>;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerRequest: io.netty.handler.codec.http.HttpRequest nettyRequest()>();
virtualinvoke v.<io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker: io.netty.channel.ChannelFuture handshake(io.netty.channel.Channel,io.netty.handler.codec.http.HttpRequest)>(v, v);
label:
v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerRequest request> = null;
goto label;
label:
v := @caughtexception;
v = <io.netty.handler.codec.http.HttpResponseStatus: io.netty.handler.codec.http.HttpResponseStatus BAD_REQUEST>;
v = virtualinvoke v.<io.netty.handler.codec.http.HttpResponseStatus: int code()>();
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerResponse: io.vertx.core.http.HttpServerResponse setStatusCode(int)>(v);
interfaceinvoke v.<io.vertx.core.http.HttpServerResponse: io.vertx.core.Future end()>();
throw v;
label:
v := @caughtexception;
v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerRequest request> = null;
throw v;
label:
virtualinvoke v.<io.vertx.core.http.impl.Http1xServerResponse: void completeHandshake()>();
v = <io.netty.handler.codec.http.HttpResponseStatus: io.netty.handler.codec.http.HttpResponseStatus SWITCHING_PROTOCOLS>;
v = virtualinvoke v.<io.netty.handler.codec.http.HttpResponseStatus: int code()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Integer status> = v;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker handshaker>;
v = virtualinvoke v.<io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker: java.lang.String selectedSubprotocol()>();
virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: void subProtocol(java.lang.String)>(v);
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.ChannelPipeline pipeline()>();
v = interfaceinvoke v.<io.netty.channel.ChannelPipeline: io.netty.channel.ChannelHandler get(java.lang.Class)>(class "Lio/vertx/core/http/impl/HttpChunkContentCompressor;");
if v == null goto label;
interfaceinvoke v.<io.netty.channel.ChannelPipeline: io.netty.channel.ChannelPipeline remove(io.netty.channel.ChannelHandler)>(v);
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
v = virtualinvoke v.<io.vertx.core.http.impl.Http1xServerConnection: io.vertx.core.impl.ContextInternal getContext()>();
v = interfaceinvoke v.<io.vertx.core.impl.ContextInternal: io.vertx.core.impl.VertxInternal owner()>();
v = interfaceinvoke v.<io.vertx.core.impl.VertxInternal: io.vertx.core.eventbus.EventBus eventBus()>();
virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: void registerHandler(io.vertx.core.eventbus.EventBus)>(v);
return;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
}
java.lang.Boolean tryHandshake(int)
{
java.lang.Throwable v;
io.vertx.core.Promise v;
io.vertx.core.http.impl.Http1xServerConnection v;
io.vertx.core.Future v;
java.lang.Integer v, v, v, v;
int v, v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.Boolean v;
boolean v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: int;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
entermonitor v;
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Integer status>;
if v != null goto label;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.Promise handshakePromise>;
if v != null goto label;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = staticinvoke <io.vertx.core.Future: io.vertx.core.Future succeededFuture(java.lang.Object)>(v);
virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.Future setHandshake(io.vertx.core.Future)>(v);
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Integer status>;
if v != null goto label;
v = null;
goto label;
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Integer status>;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
label:
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public void setHandshake(io.vertx.core.Future, io.vertx.core.Handler)
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
io.vertx.core.Handler v;
io.vertx.core.Future v, v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: io.vertx.core.Future;
v := @parameter: io.vertx.core.Handler;
v = virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.Future setHandshake(io.vertx.core.Future)>(v);
interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future onComplete(io.vertx.core.Handler)>(v);
return;
}
public io.vertx.core.Future setHandshake(io.vertx.core.Future)
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
io.vertx.core.Promise v, v, v;
io.vertx.core.http.impl.Http1xServerConnection v;
io.vertx.core.Future v, v, v;
java.lang.NullPointerException v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
io.vertx.core.Handler v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: io.vertx.core.Future;
if v != null goto label;
v = new java.lang.NullPointerException;
specialinvoke v.<java.lang.NullPointerException: void <init>()>();
throw v;
label:
v = staticinvoke <io.vertx.core.Promise: io.vertx.core.Promise promise()>();
v = staticinvoke <io.vertx.core.Promise: io.vertx.core.Promise promise()>();
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
entermonitor v;
label:
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.Promise handshakePromise>;
if v == null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>()>();
throw v;
label:
v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.Promise handshakePromise> = v;
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future onComplete(io.vertx.core.Handler)>(v);
v = interfaceinvoke v.<io.vertx.core.Promise: io.vertx.core.Future future()>();
v = staticinvoke <io.vertx.core.http.impl.ServerWebSocketImpl$lambda_setHandshake_1__1142: io.vertx.core.Handler bootstrap$(io.vertx.core.http.impl.ServerWebSocketImpl,io.vertx.core.Promise)>(v, v);
interfaceinvoke v.<io.vertx.core.Future: io.vertx.core.Future onComplete(io.vertx.core.Handler)>(v);
v = interfaceinvoke v.<io.vertx.core.Promise: io.vertx.core.Future future()>();
return v;
catch java.lang.Throwable from label to label with label;
}
protected void handleCloseConnection()
{
io.vertx.core.http.impl.ServerWebSocketImpl v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: void closeConnection()>();
return;
}
protected void handleClose(boolean)
{
io.vertx.core.spi.metrics.HttpServerMetrics v;
io.vertx.core.http.impl.ServerWebSocketImpl v;
java.lang.Object v;
io.vertx.core.http.impl.Http1xServerConnection v;
boolean v, v;
v := @this: io.vertx.core.http.impl.ServerWebSocketImpl;
v := @parameter: boolean;
v = v.<io.vertx.core.http.impl.ServerWebSocketImpl: io.vertx.core.http.impl.Http1xServerConnection conn>;
v = v.<io.vertx.core.http.impl.Http1xServerConnection: io.vertx.core.spi.metrics.HttpServerMetrics metrics>;
v = <io.vertx.core.spi.metrics.Metrics: boolean METRICS_ENABLED>;
if v == 0 goto label;
if v == null goto label;
v = virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: java.lang.Object getMetric()>();
interfaceinvoke v.<io.vertx.core.spi.metrics.HttpServerMetrics: void disconnected(java.lang.Object)>(v);
virtualinvoke v.<io.vertx.core.http.impl.ServerWebSocketImpl: void setMetric(java.lang.Object)>(null);
label:
specialinvoke v.<io.vertx.core.http.impl.WebSocketImplBase: void handleClose(boolean)>(v);
return;
}
}