public final class org.apache.activemq.transport.ws.WSTransportProxy extends org.apache.activemq.transport.TransportSupport implements org.apache.activemq.transport.Transport, org.eclipse.jetty.websocket.api.WebSocketListener, org.apache.activemq.broker.BrokerServiceAware, org.apache.activemq.transport.ws.WSTransport$WSTransportSink
{
private static final org.slf4j.Logger LOG;
private final int ORDERLY_CLOSE_TIMEOUT;
private final java.util.concurrent.locks.ReentrantLock protocolLock;
private final java.util.concurrent.CountDownLatch socketTransportStarted;
private final java.lang.String remoteAddress;
private final org.apache.activemq.transport.Transport transport;
private final org.apache.activemq.transport.ws.WSTransport wsTransport;
private org.eclipse.jetty.websocket.api.Session session;
public void <init>(java.lang.String, org.apache.activemq.transport.Transport)
{
java.util.concurrent.locks.ReentrantLock v;
org.apache.activemq.transport.Transport v;
java.lang.IllegalArgumentException v;
java.util.concurrent.CountDownLatch v;
org.apache.activemq.transport.ws.WSTransport v, v;
org.apache.activemq.transport.ws.WSTransportProxy v;
java.lang.Object v;
java.lang.String v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: java.lang.String;
v := @parameter: org.apache.activemq.transport.Transport;
specialinvoke v.<org.apache.activemq.transport.TransportSupport: void <init>()>();
v.<org.apache.activemq.transport.ws.WSTransportProxy: int ORDERLY_CLOSE_TIMEOUT> = 10;
v = new java.util.concurrent.locks.ReentrantLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantLock: void <init>()>();
v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock> = v;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.CountDownLatch socketTransportStarted> = v;
v.<org.apache.activemq.transport.ws.WSTransportProxy: java.lang.String remoteAddress> = v;
v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport> = v;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: java.lang.Object narrow(java.lang.Class)>(class "Lorg/apache/activemq/transport/ws/WSTransport;");
v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport> = v;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Provided Transport does not contains a WSTransport implementation");
throw v;
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
interfaceinvoke v.<org.apache.activemq.transport.ws.WSTransport: void setTransportSink(org.apache.activemq.transport.ws.WSTransport$WSTransportSink)>(v);
return;
}
public java.lang.String getSubProtocol()
{
org.apache.activemq.transport.ws.WSTransport v;
java.lang.String v;
org.apache.activemq.transport.ws.WSTransportProxy v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
v = interfaceinvoke v.<org.apache.activemq.transport.ws.WSTransport: java.lang.String getSubProtocol()>();
return v;
}
public void setTransportOptions(java.util.Map)
{
org.apache.activemq.transport.ws.WSTransportProxy v;
java.util.Map v, v;
org.apache.activemq.wireformat.WireFormat v;
org.apache.activemq.transport.Transport v, v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: java.util.Map;
v = staticinvoke <org.apache.activemq.util.IntrospectionSupport: java.util.Map extractProperties(java.util.Map,java.lang.String)>(v, "wireFormat.");
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
staticinvoke <org.apache.activemq.util.IntrospectionSupport: boolean setProperties(java.lang.Object,java.util.Map)>(v, v);
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: org.apache.activemq.wireformat.WireFormat getWireFormat()>();
staticinvoke <org.apache.activemq.util.IntrospectionSupport: boolean setProperties(java.lang.Object,java.util.Map)>(v, v);
return;
}
public void setBrokerService(org.apache.activemq.broker.BrokerService)
{
org.apache.activemq.broker.BrokerService v;
org.apache.activemq.transport.ws.WSTransportProxy v;
org.apache.activemq.transport.Transport v, v;
boolean v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: org.apache.activemq.broker.BrokerService;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
v = v instanceof org.apache.activemq.broker.BrokerServiceAware;
if v == 0 goto label;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
interfaceinvoke v.<org.apache.activemq.broker.BrokerServiceAware: void setBrokerService(org.apache.activemq.broker.BrokerService)>(v);
label:
return;
}
public void oneway(java.lang.Object) throws java.io.IOException
{
java.lang.Throwable v;
java.util.concurrent.locks.ReentrantLock v, v, v, v;
java.io.IOException v;
org.apache.activemq.transport.Transport v;
java.lang.Exception v;
org.apache.activemq.transport.ws.WSTransportProxy v;
java.lang.Object v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: java.lang.Object;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void oneway(java.lang.Object)>(v);
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Exception)>(v);
virtualinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: void onException(java.io.IOException)>(v);
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public java.security.cert.X509Certificate[] getPeerCertificates()
{
org.apache.activemq.transport.Transport v;
java.security.cert.X509Certificate[] v;
org.apache.activemq.transport.ws.WSTransportProxy v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: java.security.cert.X509Certificate[] getPeerCertificates()>();
return v;
}
public void setPeerCertificates(java.security.cert.X509Certificate[])
{
org.apache.activemq.transport.Transport v;
java.security.cert.X509Certificate[] v;
org.apache.activemq.transport.ws.WSTransportProxy v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: java.security.cert.X509Certificate[];
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void setPeerCertificates(java.security.cert.X509Certificate[])>(v);
return;
}
public java.lang.String getRemoteAddress()
{
java.lang.String v;
org.apache.activemq.transport.ws.WSTransportProxy v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.lang.String remoteAddress>;
return v;
}
public org.apache.activemq.wireformat.WireFormat getWireFormat()
{
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.ws.WSTransportProxy v;
org.apache.activemq.wireformat.WireFormat v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: org.apache.activemq.wireformat.WireFormat getWireFormat()>();
return v;
}
public int getReceiveCounter()
{
int v;
org.apache.activemq.transport.Transport v;
org.apache.activemq.transport.ws.WSTransportProxy v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
v = interfaceinvoke v.<org.apache.activemq.transport.Transport: int getReceiveCounter()>();
return v;
}
protected void doStop(org.apache.activemq.util.ServiceStopper) throws java.lang.Exception
{
org.apache.activemq.transport.ws.WSTransportProxy v;
org.eclipse.jetty.websocket.api.Session v, v, v;
org.apache.activemq.transport.Transport v;
org.apache.activemq.util.ServiceStopper v;
boolean v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: org.apache.activemq.util.ServiceStopper;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void stop()>();
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.eclipse.jetty.websocket.api.Session session>;
if v == null goto label;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.eclipse.jetty.websocket.api.Session session>;
v = interfaceinvoke v.<org.eclipse.jetty.websocket.api.Session: boolean isOpen()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.eclipse.jetty.websocket.api.Session session>;
interfaceinvoke v.<org.eclipse.jetty.websocket.api.Session: void close()>();
label:
return;
}
protected void doStart() throws java.lang.Exception
{
java.util.concurrent.CountDownLatch v;
org.apache.activemq.transport.TransportListener v;
org.apache.activemq.transport.ws.WSTransportProxy v;
org.apache.activemq.transport.Transport v, v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
v = virtualinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.TransportListener getTransportListener()>();
interfaceinvoke v.<org.apache.activemq.transport.Transport: void setTransportListener(org.apache.activemq.transport.TransportListener)>(v);
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.CountDownLatch socketTransportStarted>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.Transport transport>;
interfaceinvoke v.<org.apache.activemq.transport.Transport: void start()>();
return;
}
public void onWebSocketBinary(byte[], int, int)
{
java.lang.Throwable v;
byte[] v;
java.nio.ByteBuffer v;
org.apache.activemq.transport.ws.WSTransportProxy v;
int v, v;
boolean v;
org.slf4j.Logger v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v;
java.io.IOException v;
java.lang.Exception v;
java.util.concurrent.CountDownLatch v;
org.apache.activemq.transport.ws.WSTransport v;
java.lang.InterruptedException v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: byte[];
v := @parameter: int;
v := @parameter: int;
v = specialinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: boolean transportStartedAtLeastOnce()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Waiting for WebSocket to be properly started...");
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.CountDownLatch socketTransportStarted>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void await()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>("While waiting for WebSocket to be properly started, we got interrupted!! Should be okay, but you could see race conditions...");
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
v = staticinvoke <java.nio.ByteBuffer: java.nio.ByteBuffer wrap(byte[],int,int)>(v, v, v);
interfaceinvoke v.<org.apache.activemq.transport.ws.WSTransport: void onWebSocketBinary(java.nio.ByteBuffer)>(v);
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Exception)>(v);
virtualinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: void onException(java.io.IOException)>(v);
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void onWebSocketText(java.lang.String)
{
java.lang.Throwable v;
org.slf4j.Logger v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v;
java.io.IOException v;
java.lang.Exception v;
java.util.concurrent.CountDownLatch v;
org.apache.activemq.transport.ws.WSTransport v;
java.lang.InterruptedException v;
org.apache.activemq.transport.ws.WSTransportProxy v;
java.lang.String v;
boolean v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: boolean transportStartedAtLeastOnce()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Waiting for WebSocket to be properly started...");
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.CountDownLatch socketTransportStarted>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void await()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>("While waiting for WebSocket to be properly started, we got interrupted!! Should be okay, but you could see race conditions...");
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
interfaceinvoke v.<org.apache.activemq.transport.ws.WSTransport: void onWebSocketText(java.lang.String)>(v);
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Exception)>(v);
virtualinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: void onException(java.io.IOException)>(v);
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void onWebSocketClose(int, java.lang.String)
{
java.lang.Throwable v;
java.lang.Integer v;
org.apache.activemq.transport.ws.WSTransportProxy v;
int v;
java.lang.String v;
boolean v, v, v, v, v;
org.slf4j.Logger v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v, v, v, v, v;
java.lang.Exception v;
java.util.concurrent.TimeUnit v;
org.apache.activemq.transport.ws.WSTransport v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: int;
v := @parameter: java.lang.String;
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean tryLock()>();
if v != 0 goto label;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean tryLock(long,java.util.concurrent.TimeUnit)>(10L, v);
if v == 0 goto label;
label:
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("WebSocket closed: code[{}] message[{}]", v, v);
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
interfaceinvoke v.<org.apache.activemq.transport.ws.WSTransport: void onWebSocketClosed()>();
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>("Failed to close WebSocket cleanly", v);
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
if v == 0 goto label;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
label:
throw v;
label:
return;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void onWebSocketConnect(org.eclipse.jetty.websocket.api.Session)
{
org.apache.activemq.transport.ws.WSTransport v, v, v;
org.apache.activemq.transport.ws.WSTransportProxy v;
org.eclipse.jetty.websocket.api.Session v, v, v;
int v, v, v;
org.eclipse.jetty.websocket.api.WebSocketPolicy v, v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: org.eclipse.jetty.websocket.api.Session;
v.<org.apache.activemq.transport.ws.WSTransportProxy: org.eclipse.jetty.websocket.api.Session session> = v;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
v = interfaceinvoke v.<org.apache.activemq.transport.ws.WSTransport: int getMaxFrameSize()>();
if v <= 0 goto label;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.eclipse.jetty.websocket.api.Session session>;
v = interfaceinvoke v.<org.eclipse.jetty.websocket.api.Session: org.eclipse.jetty.websocket.api.WebSocketPolicy getPolicy()>();
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
v = interfaceinvoke v.<org.apache.activemq.transport.ws.WSTransport: int getMaxFrameSize()>();
virtualinvoke v.<org.eclipse.jetty.websocket.api.WebSocketPolicy: void setMaxBinaryMessageSize(int)>(v);
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.eclipse.jetty.websocket.api.Session session>;
v = interfaceinvoke v.<org.eclipse.jetty.websocket.api.Session: org.eclipse.jetty.websocket.api.WebSocketPolicy getPolicy()>();
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.apache.activemq.transport.ws.WSTransport wsTransport>;
v = interfaceinvoke v.<org.apache.activemq.transport.ws.WSTransport: int getMaxFrameSize()>();
virtualinvoke v.<org.eclipse.jetty.websocket.api.WebSocketPolicy: void setMaxTextMessageSize(int)>(v);
label:
return;
}
public void onWebSocketError(java.lang.Throwable)
{
java.lang.Throwable v;
java.io.IOException v;
org.apache.activemq.transport.ws.WSTransportProxy v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: java.lang.Throwable;
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Throwable)>(v);
virtualinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: void onException(java.io.IOException)>(v);
return;
}
public void onSocketOutboundText(java.lang.String) throws java.io.IOException
{
org.eclipse.jetty.websocket.api.RemoteEndpoint v;
java.lang.Integer v;
java.util.concurrent.Future v;
org.apache.activemq.transport.ws.WSTransportProxy v;
org.eclipse.jetty.websocket.api.Session v;
int v, v;
java.lang.String v;
boolean v;
org.slf4j.Logger v, v, v;
java.io.IOException v;
java.lang.Exception v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.CountDownLatch v;
java.lang.InterruptedException v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: boolean transportStartedAtLeastOnce()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Waiting for WebSocket to be properly started...");
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.CountDownLatch socketTransportStarted>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void await()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>("While waiting for WebSocket to be properly started, we got interrupted!! Should be okay, but you could see race conditions...");
label:
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
v = virtualinvoke v.<java.lang.String: int length()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("WS Proxy sending string of size {} out", v);
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.eclipse.jetty.websocket.api.Session session>;
v = interfaceinvoke v.<org.eclipse.jetty.websocket.api.Session: org.eclipse.jetty.websocket.api.RemoteEndpoint getRemote()>();
v = interfaceinvoke v.<org.eclipse.jetty.websocket.api.RemoteEndpoint: java.util.concurrent.Future sendStringByFuture(java.lang.String)>(v);
v = staticinvoke <org.apache.activemq.transport.ws.WSTransportProxy: int getDefaultSendTimeOut()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get(long,java.util.concurrent.TimeUnit)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Exception)>(v);
throw v;
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Exception from label to label with label;
}
public void onSocketOutboundBinary(java.nio.ByteBuffer) throws java.io.IOException
{
org.eclipse.jetty.websocket.api.RemoteEndpoint v;
java.lang.Integer v;
java.nio.ByteBuffer v;
java.util.concurrent.Future v;
org.apache.activemq.transport.ws.WSTransportProxy v;
org.eclipse.jetty.websocket.api.Session v;
int v, v, v;
boolean v;
org.slf4j.Logger v, v, v;
java.io.IOException v;
java.lang.Exception v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.CountDownLatch v;
java.lang.InterruptedException v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v := @parameter: java.nio.ByteBuffer;
v = specialinvoke v.<org.apache.activemq.transport.ws.WSTransportProxy: boolean transportStartedAtLeastOnce()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Waiting for WebSocket to be properly started...");
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.CountDownLatch socketTransportStarted>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void await()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>("While waiting for WebSocket to be properly started, we got interrupted!! Should be okay, but you could see race conditions...");
label:
v = <org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG>;
v = virtualinvoke v.<java.nio.ByteBuffer: int remaining()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("WS Proxy sending {} bytes out", v);
v = virtualinvoke v.<java.nio.ByteBuffer: int limit()>();
label:
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: org.eclipse.jetty.websocket.api.Session session>;
v = interfaceinvoke v.<org.eclipse.jetty.websocket.api.Session: org.eclipse.jetty.websocket.api.RemoteEndpoint getRemote()>();
v = interfaceinvoke v.<org.eclipse.jetty.websocket.api.RemoteEndpoint: java.util.concurrent.Future sendBytesByFuture(java.nio.ByteBuffer)>(v);
v = staticinvoke <org.apache.activemq.transport.ws.WSTransportProxy: int getDefaultSendTimeOut()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get(long,java.util.concurrent.TimeUnit)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <org.apache.activemq.util.IOExceptionSupport: java.io.IOException create(java.lang.Exception)>(v);
throw v;
label:
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer limit(int)>(v);
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer position(int)>(v);
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Exception from label to label with label;
}
private boolean transportStartedAtLeastOnce()
{
java.util.concurrent.CountDownLatch v;
byte v;
org.apache.activemq.transport.ws.WSTransportProxy v;
long v;
boolean v;
v := @this: org.apache.activemq.transport.ws.WSTransportProxy;
v = v.<org.apache.activemq.transport.ws.WSTransportProxy: java.util.concurrent.CountDownLatch socketTransportStarted>;
v = virtualinvoke v.<java.util.concurrent.CountDownLatch: long getCount()>();
v = v cmp 0L;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static int getDefaultSendTimeOut()
{
int v;
java.lang.Integer v;
v = staticinvoke <java.lang.Integer: java.lang.Integer getInteger(java.lang.String,int)>("org.apache.activemq.transport.ws.WSTransportProxy.sendTimeout", 30);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/transport/ws/WSTransportProxy;");
<org.apache.activemq.transport.ws.WSTransportProxy: org.slf4j.Logger LOG> = v;
return;
}
}