public abstract class org.apache.activemq.transport.ws.AbstractStompSocket extends org.apache.activemq.transport.TransportSupport implements org.apache.activemq.transport.stomp.StompTransport
{
private static final org.slf4j.Logger LOG;
protected java.util.concurrent.locks.ReentrantLock protocolLock;
protected org.apache.activemq.transport.stomp.ProtocolConverter protocolConverter;
protected org.apache.activemq.transport.stomp.StompWireFormat wireFormat;
protected final java.util.concurrent.CountDownLatch socketTransportStarted;
protected final org.apache.activemq.transport.stomp.StompInactivityMonitor stompInactivityMonitor;
protected volatile int receiveCounter;
protected final java.lang.String remoteAddress;
protected java.security.cert.X509Certificate[] certificates;
public void <init>(java.lang.String)
{
java.util.concurrent.locks.ReentrantLock v;
org.apache.activemq.transport.stomp.StompInactivityMonitor v;
org.apache.activemq.transport.stomp.ProtocolConverter v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
java.util.concurrent.CountDownLatch v;
java.lang.String v;
org.apache.activemq.transport.stomp.StompWireFormat v, v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v := @parameter: java.lang.String;
specialinvoke v.<org.apache.activemq.transport.TransportSupport: void <init>()>();
v = new java.util.concurrent.locks.ReentrantLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantLock: void <init>()>();
v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.util.concurrent.locks.ReentrantLock protocolLock> = v;
v = new org.apache.activemq.transport.stomp.ProtocolConverter;
specialinvoke v.<org.apache.activemq.transport.stomp.ProtocolConverter: void <init>(org.apache.activemq.transport.stomp.StompTransport,org.apache.activemq.broker.BrokerContext)>(v, null);
v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.ProtocolConverter protocolConverter> = v;
v = new org.apache.activemq.transport.stomp.StompWireFormat;
specialinvoke v.<org.apache.activemq.transport.stomp.StompWireFormat: void <init>()>();
v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompWireFormat wireFormat> = v;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.util.concurrent.CountDownLatch socketTransportStarted> = v;
v = new org.apache.activemq.transport.stomp.StompInactivityMonitor;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompWireFormat wireFormat>;
specialinvoke v.<org.apache.activemq.transport.stomp.StompInactivityMonitor: void <init>(org.apache.activemq.transport.Transport,org.apache.activemq.wireformat.WireFormat)>(v, v);
v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompInactivityMonitor stompInactivityMonitor> = v;
v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.lang.String remoteAddress> = v;
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;
java.lang.Exception v;
org.apache.activemq.transport.stomp.ProtocolConverter v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
java.lang.Object v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v := @parameter: java.lang.Object;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.ProtocolConverter protocolConverter>;
virtualinvoke v.<org.apache.activemq.transport.stomp.ProtocolConverter: void onActiveMQCommand(org.apache.activemq.command.Command)>(v);
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: 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.AbstractStompSocket: void onException(java.io.IOException)>(v);
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: 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.AbstractStompSocket: 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 void sendToActiveMQ(org.apache.activemq.command.Command)
{
java.lang.Throwable v;
java.util.concurrent.locks.ReentrantLock v, v, v;
org.apache.activemq.command.Command v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v := @parameter: org.apache.activemq.command.Command;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
virtualinvoke v.<org.apache.activemq.transport.ws.AbstractStompSocket: void doConsume(java.lang.Object)>(v);
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: 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.AbstractStompSocket: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
protected void doStop(org.apache.activemq.util.ServiceStopper) throws java.lang.Exception
{
org.apache.activemq.transport.stomp.StompInactivityMonitor v;
org.apache.activemq.util.ServiceStopper v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v := @parameter: org.apache.activemq.util.ServiceStopper;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompInactivityMonitor stompInactivityMonitor>;
virtualinvoke v.<org.apache.activemq.transport.stomp.StompInactivityMonitor: void stop()>();
virtualinvoke v.<org.apache.activemq.transport.ws.AbstractStompSocket: void handleStopped()>();
return;
}
protected void doStart() throws java.lang.Exception
{
java.util.concurrent.CountDownLatch v;
org.apache.activemq.transport.TransportListener v;
org.apache.activemq.transport.stomp.StompInactivityMonitor v, v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.util.concurrent.CountDownLatch socketTransportStarted>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompInactivityMonitor stompInactivityMonitor>;
v = virtualinvoke v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.TransportListener getTransportListener()>();
virtualinvoke v.<org.apache.activemq.transport.stomp.StompInactivityMonitor: void setTransportListener(org.apache.activemq.transport.TransportListener)>(v);
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompInactivityMonitor stompInactivityMonitor>;
virtualinvoke v.<org.apache.activemq.transport.stomp.StompInactivityMonitor: void startConnectCheckTask()>();
return;
}
public abstract void sendToStomp(org.apache.activemq.transport.stomp.StompFrame) throws java.io.IOException;
public abstract void handleStopped() throws java.io.IOException;
public org.apache.activemq.transport.stomp.StompInactivityMonitor getInactivityMonitor()
{
org.apache.activemq.transport.stomp.StompInactivityMonitor v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompInactivityMonitor stompInactivityMonitor>;
return v;
}
public org.apache.activemq.transport.stomp.StompWireFormat getWireFormat()
{
org.apache.activemq.transport.stomp.StompWireFormat v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompWireFormat wireFormat>;
return v;
}
public java.lang.String getRemoteAddress()
{
java.lang.String v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.lang.String remoteAddress>;
return v;
}
public int getReceiveCounter()
{
int v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: int receiveCounter>;
return v;
}
protected void processStompFrame(java.lang.String)
{
java.lang.Throwable v;
byte[] v;
org.apache.activemq.transport.stomp.ProtocolConverter v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
int v, v, v;
java.lang.String v;
org.apache.activemq.util.ByteSequence v;
boolean v, v;
org.slf4j.Logger v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v;
java.io.IOException v;
org.apache.activemq.command.KeepAliveInfo v;
org.apache.activemq.transport.stomp.StompInactivityMonitor v;
java.lang.Exception v;
java.util.concurrent.CountDownLatch v;
java.lang.InterruptedException v;
java.lang.Object v;
java.security.cert.X509Certificate[] v;
org.apache.activemq.transport.stomp.StompWireFormat v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.apache.activemq.transport.ws.AbstractStompSocket: boolean transportStartedAtLeastOnce()>();
if v != 0 goto label;
v = <org.apache.activemq.transport.ws.AbstractStompSocket: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Waiting for StompSocket to be properly started...");
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: 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.AbstractStompSocket: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>("While waiting for StompSocket to be properly started, we got interrupted!! Should be okay, but you could see race conditions...");
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.util.concurrent.locks.ReentrantLock protocolLock>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
if v == null goto label;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: int receiveCounter>;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + v;
v.<org.apache.activemq.transport.ws.AbstractStompSocket: int receiveCounter> = v;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("\n");
if v == 0 goto label;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompInactivityMonitor stompInactivityMonitor>;
v = new org.apache.activemq.command.KeepAliveInfo;
specialinvoke v.<org.apache.activemq.command.KeepAliveInfo: void <init>()>();
virtualinvoke v.<org.apache.activemq.transport.stomp.StompInactivityMonitor: void onCommand(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.StompWireFormat wireFormat>;
v = new org.apache.activemq.util.ByteSequence;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.lang.String)>("UTF-8");
specialinvoke v.<org.apache.activemq.util.ByteSequence: void <init>(byte[])>(v);
v = virtualinvoke v.<org.apache.activemq.transport.stomp.StompWireFormat: java.lang.Object unmarshal(org.apache.activemq.util.ByteSequence)>(v);
v = virtualinvoke v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.security.cert.X509Certificate[] getPeerCertificates()>();
virtualinvoke v.<org.apache.activemq.transport.stomp.StompFrame: void setTransportContext(java.lang.Object)>(v);
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: org.apache.activemq.transport.stomp.ProtocolConverter protocolConverter>;
virtualinvoke v.<org.apache.activemq.transport.stomp.ProtocolConverter: void onStompCommand(org.apache.activemq.transport.stomp.StompFrame)>(v);
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: 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.AbstractStompSocket: void onException(java.io.IOException)>(v);
label:
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: 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.AbstractStompSocket: 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;
}
private boolean transportStartedAtLeastOnce()
{
java.util.concurrent.CountDownLatch v;
byte v;
long v;
boolean v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: 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;
}
public java.security.cert.X509Certificate[] getPeerCertificates()
{
java.security.cert.X509Certificate[] v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v = v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.security.cert.X509Certificate[] certificates>;
return v;
}
public void setPeerCertificates(java.security.cert.X509Certificate[])
{
java.security.cert.X509Certificate[] v;
org.apache.activemq.transport.ws.AbstractStompSocket v;
v := @this: org.apache.activemq.transport.ws.AbstractStompSocket;
v := @parameter: java.security.cert.X509Certificate[];
v.<org.apache.activemq.transport.ws.AbstractStompSocket: java.security.cert.X509Certificate[] certificates> = v;
return;
}
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/AbstractStompSocket;");
<org.apache.activemq.transport.ws.AbstractStompSocket: org.slf4j.Logger LOG> = v;
return;
}
}