public class org.fusesource.mqtt.client.CallbackConnection extends java.lang.Object
{
private static final org.fusesource.mqtt.client.ExtendedListener DEFAULT_LISTENER;
private final org.fusesource.hawtdispatch.DispatchQueue queue;
private final org.fusesource.mqtt.client.MQTT mqtt;
private org.fusesource.hawtdispatch.transport.Transport transport;
private org.fusesource.mqtt.client.ExtendedListener listener;
private java.lang.Runnable refiller;
private java.util.Map requests;
private java.util.LinkedList overflow;
private final java.util.HashMap processed;
private java.lang.Throwable failure;
private boolean disconnected;
private org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor;
private long pingedAt;
private long reconnects;
private java.util.concurrent.atomic.AtomicBoolean isReconnecting;
private final java.util.concurrent.atomic.AtomicInteger suspendCount;
private final java.util.concurrent.atomic.AtomicInteger suspendChanges;
private final java.util.HashMap activeSubs;
private final java.lang.Object nextMessageIdLock;
private boolean onRefillCalled;
private short nextMessageId;
public static final org.fusesource.hawtdispatch.Task NOOP;
static final boolean $assertionsDisabled;
public void <init>(org.fusesource.mqtt.client.MQTT)
{
org.fusesource.mqtt.client.MQTT v, v, v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.HashMap v, v;
org.fusesource.mqtt.client.CallbackConnection v;
java.util.concurrent.atomic.AtomicInteger v, v;
java.util.LinkedList v;
java.util.concurrent.ConcurrentHashMap v;
org.fusesource.hawtdispatch.DispatchQueue v, v, v;
org.fusesource.mqtt.client.ExtendedListener v;
java.lang.Object v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.MQTT;
specialinvoke v.<java.lang.Object: void <init>()>();
v = <org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener DEFAULT_LISTENER>;
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener listener> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.fusesource.mqtt.client.CallbackConnection: java.util.Map requests> = v;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow> = v;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v.<org.fusesource.mqtt.client.CallbackConnection: java.util.HashMap processed> = v;
v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected> = 0;
v.<org.fusesource.mqtt.client.CallbackConnection: long reconnects> = 0L;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicBoolean isReconnecting> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>(int)>(0);
v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicInteger suspendCount> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>(int)>(0);
v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicInteger suspendChanges> = v;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v.<org.fusesource.mqtt.client.CallbackConnection: java.util.HashMap activeSubs> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Object nextMessageIdLock> = v;
v.<org.fusesource.mqtt.client.CallbackConnection: boolean onRefillCalled> = 0;
v.<org.fusesource.mqtt.client.CallbackConnection: short nextMessageId> = 1;
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt> = v;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue>;
if v != null goto label;
v = staticinvoke <org.fusesource.hawtdispatch.Dispatch: org.fusesource.hawtdispatch.DispatchQueue createQueue(java.lang.String)>("mqtt client");
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue> = v;
goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: org.fusesource.hawtdispatch.DispatchQueue dispatchQueue>;
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue> = v;
label:
return;
}
public void connect(org.fusesource.mqtt.client.Callback)
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
java.lang.AssertionError v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v;
org.fusesource.hawtdispatch.transport.Transport v;
org.fusesource.mqtt.client.CallbackConnection$LoginHandler v;
boolean v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.Callback;
v = <org.fusesource.mqtt.client.CallbackConnection: boolean $assertionsDisabled>;
if v != 0 goto label;
if v != null goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>(java.lang.Object)>("Callback should not be null.");
throw v;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
if v == null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Already connected");
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
return;
label:
v = new org.fusesource.mqtt.client.CallbackConnection$LoginHandler;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$LoginHandler: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.client.Callback,boolean)>(v, v, 1);
virtualinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void createTransport(org.fusesource.mqtt.client.Callback)>(v);
label:
goto label;
label:
v := @caughtexception;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private long calculateDelay()
{
org.fusesource.mqtt.client.MQTT v, v, v, v, v;
long v, v, v, v, v, v, v, v;
org.fusesource.mqtt.client.CallbackConnection v;
byte v, v;
double v, v, v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: long reconnectDelay>;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: double reconnectBackOffMultiplier>;
v = v cmpl 1.0;
if v <= 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: long reconnectDelay>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: long reconnects>;
v = v * v;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: double reconnectBackOffMultiplier>;
v = staticinvoke <java.lang.Math: double pow(double,double)>(v, v);
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: long reconnectDelayMax>;
v = staticinvoke <java.lang.Math: long min(long,long)>(v, v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: long reconnects>;
v = v + 1L;
v.<org.fusesource.mqtt.client.CallbackConnection: long reconnects> = v;
return v;
}
void reconnect()
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v, v;
long v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.CallbackConnection$2 v;
java.lang.InterruptedException v;
org.fusesource.mqtt.client.CallbackConnection$LoginHandler v;
boolean v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicBoolean isReconnecting>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean getAndSet(boolean)>(1);
if v == 0 goto label;
return;
label:
v = specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: long calculateDelay()>();
label:
staticinvoke <java.lang.Thread: void sleep(long)>(v);
label:
goto label;
label:
v := @caughtexception;
label:
v = new org.fusesource.mqtt.client.CallbackConnection$LoginHandler;
v = new org.fusesource.mqtt.client.CallbackConnection$2;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$2: void <init>(org.fusesource.mqtt.client.CallbackConnection)>(v);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$LoginHandler: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.client.Callback,boolean)>(v, v, 0);
virtualinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void createTransport(org.fusesource.mqtt.client.Callback)>(v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicBoolean isReconnecting>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void handleFatalFailure(java.lang.Throwable)>(v);
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
void handleSessionFailure(java.lang.Throwable)
{
java.lang.Throwable v;
java.lang.Object[] v;
org.fusesource.mqtt.client.MQTT v, v, v;
long v, v, v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.hawtdispatch.transport.Transport v;
byte v, v;
boolean v;
org.fusesource.hawtdispatch.transport.HeartBeatMonitor v, v;
org.fusesource.mqtt.client.Tracer v;
org.fusesource.mqtt.client.CallbackConnection$3 v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: java.lang.Throwable;
v = v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected>;
if v != 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: long reconnectAttemptsMax>;
v = v cmp 0L;
if v < 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: long reconnects>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: long reconnectAttemptsMax>;
v = v cmp v;
if v >= 0 goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: org.fusesource.mqtt.client.Tracer tracer>;
v = newarray (java.lang.Object)[0];
virtualinvoke v.<org.fusesource.mqtt.client.Tracer: void debug(java.lang.String,java.lang.Object[])>("Reconnecting transport", v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void stop()>();
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor> = null;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport> = null;
if v == null goto label;
v = new org.fusesource.mqtt.client.CallbackConnection$3;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$3: void <init>(org.fusesource.mqtt.client.CallbackConnection)>(v);
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void stop(org.fusesource.hawtdispatch.Task)>(v);
goto label;
label:
virtualinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void reconnect()>();
goto label;
label:
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void handleFatalFailure(java.lang.Throwable)>(v);
label:
return;
}
void reconnect(org.fusesource.mqtt.client.Callback)
{
java.util.concurrent.TimeUnit v;
org.fusesource.mqtt.client.CallbackConnection$4 v;
long v;
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.Callback;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
v = specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: long calculateDelay()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = new org.fusesource.mqtt.client.CallbackConnection$4;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$4: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.client.Callback)>(v, v);
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void executeAfter(long,java.util.concurrent.TimeUnit,org.fusesource.hawtdispatch.Task)>(v, v, v);
return;
}
void createTransport(org.fusesource.mqtt.client.Callback) throws java.lang.Exception
{
javax.net.ssl.SSLContext v, v, v;
org.fusesource.mqtt.client.CallbackConnection v;
java.net.URI v, v, v;
boolean v, v, v;
org.fusesource.hawtdispatch.transport.TcpTransport v, v;
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.transport.SslTransport v;
java.lang.Exception v;
org.fusesource.mqtt.client.CallbackConnection$5 v;
java.lang.Object[] v;
java.util.concurrent.ThreadPoolExecutor v;
org.fusesource.mqtt.client.MQTT v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.fusesource.mqtt.client.Callback v;
int v, v, v, v, v;
java.lang.String v, v, v, v;
org.fusesource.hawtdispatch.Task v;
java.util.concurrent.Executor v, v;
org.fusesource.mqtt.codec.MQTTProtocolCodec v;
org.fusesource.mqtt.client.Tracer v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.Callback;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: org.fusesource.mqtt.client.Tracer tracer>;
v = newarray (java.lang.Object)[0];
virtualinvoke v.<org.fusesource.mqtt.client.Tracer: void debug(java.lang.String,java.lang.Object[])>("Connecting", v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: java.net.URI host>;
v = virtualinvoke v.<java.net.URI: java.lang.String getScheme()>();
v = "tcp";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = new org.fusesource.hawtdispatch.transport.TcpTransport;
specialinvoke v.<org.fusesource.hawtdispatch.transport.TcpTransport: void <init>()>();
v = v;
goto label;
label:
v = staticinvoke <org.fusesource.hawtdispatch.transport.SslTransport: java.lang.String protocol(java.lang.String)>(v);
if v == null goto label;
v = new org.fusesource.hawtdispatch.transport.SslTransport;
specialinvoke v.<org.fusesource.hawtdispatch.transport.SslTransport: void <init>()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: javax.net.ssl.SSLContext sslContext>;
if v != null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = staticinvoke <javax.net.ssl.SSLContext: javax.net.ssl.SSLContext getDefault()>();
v.<org.fusesource.mqtt.client.MQTT: javax.net.ssl.SSLContext sslContext> = v;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: javax.net.ssl.SSLContext sslContext>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.SslTransport: void setSSLContext(javax.net.ssl.SSLContext)>(v);
v = v;
goto label;
label:
v = new java.lang.Exception;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("Unsupported URI scheme \'\u0001\'");
specialinvoke v.<java.lang.Exception: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: java.util.concurrent.Executor blockingExecutor>;
if v != null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = staticinvoke <org.fusesource.mqtt.client.MQTT: java.util.concurrent.ThreadPoolExecutor getBlockingThreadPool()>();
v.<org.fusesource.mqtt.client.MQTT: java.util.concurrent.Executor blockingExecutor> = v;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: java.util.concurrent.Executor blockingExecutor>;
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void setBlockingExecutor(java.util.concurrent.Executor)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void setDispatchQueue(org.fusesource.hawtdispatch.DispatchQueue)>(v);
v = new org.fusesource.mqtt.codec.MQTTProtocolCodec;
specialinvoke v.<org.fusesource.mqtt.codec.MQTTProtocolCodec: void <init>()>();
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void setProtocolCodec(org.fusesource.hawtdispatch.transport.ProtocolCodec)>(v);
v = v instanceof org.fusesource.hawtdispatch.transport.TcpTransport;
if v == 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: int maxReadRate>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.TcpTransport: void setMaxReadRate(int)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: int maxWriteRate>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.TcpTransport: void setMaxWriteRate(int)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: int receiveBufferSize>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.TcpTransport: void setReceiveBufferSize(int)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: int sendBufferSize>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.TcpTransport: void setSendBufferSize(int)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: int trafficClass>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.TcpTransport: void setTrafficClass(int)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: boolean useLocalHost>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.TcpTransport: void setUseLocalHost(boolean)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: java.net.URI host>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: java.net.URI localAddress>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.TcpTransport: void connecting(java.net.URI,java.net.URI)>(v, v);
label:
v = new org.fusesource.mqtt.client.CallbackConnection$5;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$5: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.client.Callback,org.fusesource.hawtdispatch.transport.Transport)>(v, v, v);
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void setTransportListener(org.fusesource.hawtdispatch.transport.TransportListener)>(v);
v = <org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.Task NOOP>;
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void start(org.fusesource.hawtdispatch.Task)>(v);
return;
}
public void onSessionEstablished(org.fusesource.hawtdispatch.transport.Transport)
{
org.fusesource.mqtt.client.MQTT v, v;
org.fusesource.mqtt.client.CallbackConnection v;
short v, v;
org.fusesource.hawtdispatch.transport.Transport v, v, v, v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v, v;
org.fusesource.hawtdispatch.transport.HeartBeatMonitor v, v, v, v, v, v;
org.fusesource.mqtt.client.CallbackConnection$7 v;
org.fusesource.mqtt.client.CallbackConnection$6 v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.hawtdispatch.transport.Transport;
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport> = v;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicInteger suspendCount>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v <= 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void suspendRead()>();
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
v = new org.fusesource.mqtt.client.CallbackConnection$6;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$6: void <init>(org.fusesource.mqtt.client.CallbackConnection)>(v);
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void setTransportListener(org.fusesource.hawtdispatch.transport.TransportListener)>(v);
v.<org.fusesource.mqtt.client.CallbackConnection: long pingedAt> = 0L;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = virtualinvoke v.<org.fusesource.mqtt.client.MQTT: short getKeepAlive()>();
if v <= 0 goto label;
v = new org.fusesource.hawtdispatch.transport.HeartBeatMonitor;
specialinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void <init>()>();
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor> = v;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = virtualinvoke v.<org.fusesource.mqtt.client.MQTT: short getKeepAlive()>();
v = v * 1000;
v = v / 2;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void setWriteInterval(long)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void setTransport(org.fusesource.hawtdispatch.transport.Transport)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void suspendRead()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
v = new org.fusesource.mqtt.client.CallbackConnection$7;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$7: void <init>(org.fusesource.mqtt.client.CallbackConnection)>(v);
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void setOnKeepAlive(org.fusesource.hawtdispatch.Task)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void start()>();
label:
return;
}
public org.fusesource.hawtdispatch.transport.Transport transport()
{
org.fusesource.hawtdispatch.transport.Transport v;
org.fusesource.mqtt.client.CallbackConnection v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
return v;
}
public org.fusesource.hawtdispatch.DispatchQueue getDispatchQueue()
{
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.mqtt.client.CallbackConnection v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
return v;
}
public void resume()
{
org.fusesource.hawtdispatch.transport.HeartBeatMonitor v, v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.hawtdispatch.transport.Transport v, v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicInteger suspendChanges>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicInteger suspendCount>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int decrementAndGet()>();
if v != 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void resumeRead()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void resumeRead()>();
label:
return;
}
public void suspend()
{
org.fusesource.hawtdispatch.transport.HeartBeatMonitor v, v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.hawtdispatch.transport.Transport v, v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicInteger suspendChanges>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.concurrent.atomic.AtomicInteger suspendCount>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
if v != 1 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void suspendRead()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void suspendRead()>();
label:
return;
}
public org.fusesource.mqtt.client.CallbackConnection refiller(java.lang.Runnable)
{
org.fusesource.hawtdispatch.DispatchQueue v;
java.lang.Runnable v;
org.fusesource.mqtt.client.CallbackConnection v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: java.lang.Runnable;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void assertExecuting()>();
v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Runnable refiller> = v;
return v;
}
public org.fusesource.mqtt.client.CallbackConnection listener(org.fusesource.mqtt.client.Listener)
{
org.fusesource.mqtt.client.CallbackConnection$8 v;
org.fusesource.mqtt.client.CallbackConnection v;
boolean v;
org.fusesource.mqtt.client.Listener v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.Listener;
v = v instanceof org.fusesource.mqtt.client.ExtendedListener;
if v == 0 goto label;
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener listener> = v;
goto label;
label:
v = new org.fusesource.mqtt.client.CallbackConnection$8;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$8: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.client.Listener)>(v, v);
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener listener> = v;
label:
return v;
}
public boolean full()
{
org.fusesource.hawtdispatch.transport.Transport v;
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.mqtt.client.CallbackConnection v;
boolean v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void assertExecuting()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
v = interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: boolean full()>();
return v;
}
public java.lang.Throwable failure()
{
java.lang.Throwable v;
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.mqtt.client.CallbackConnection v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void assertExecuting()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Throwable failure>;
return v;
}
public void disconnect(org.fusesource.mqtt.client.Callback)
{
org.fusesource.mqtt.codec.MQTTFrame v;
org.fusesource.mqtt.codec.DISCONNECT v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v;
org.fusesource.mqtt.client.CallbackConnection$10 v;
short v, v;
org.fusesource.hawtdispatch.transport.Transport v;
org.fusesource.mqtt.client.CallbackConnection$9 v;
org.fusesource.mqtt.client.CallbackConnection$Request v;
boolean v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.Callback;
v = v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected>;
if v == 0 goto label;
if v == null goto label;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onSuccess(java.lang.Object)>(null);
label:
return;
label:
v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected> = 1;
v = specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: short getNextMessageId()>();
v = new org.fusesource.mqtt.client.CallbackConnection$9;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$9: void <init>(org.fusesource.mqtt.client.CallbackConnection,short,org.fusesource.mqtt.client.Callback)>(v, v, v);
v = new org.fusesource.mqtt.client.CallbackConnection$10;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$10: void <init>(org.fusesource.mqtt.client.CallbackConnection,java.lang.Runnable)>(v, v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
if v == null goto label;
v = new org.fusesource.mqtt.codec.DISCONNECT;
specialinvoke v.<org.fusesource.mqtt.codec.DISCONNECT: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.DISCONNECT: org.fusesource.mqtt.codec.MQTTFrame encode()>();
v = new org.fusesource.mqtt.client.CallbackConnection$Request;
v = specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: short getNextMessageId()>();
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$Request: void <init>(int,org.fusesource.mqtt.codec.MQTTFrame,org.fusesource.mqtt.client.Callback)>(v, v, v);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void send(org.fusesource.mqtt.client.CallbackConnection$Request)>(v);
goto label;
label:
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onSuccess(java.lang.Object)>(null);
label:
return;
}
public void kill(org.fusesource.mqtt.client.Callback)
{
org.fusesource.mqtt.client.CallbackConnection$11 v;
org.fusesource.hawtdispatch.transport.Transport v;
org.fusesource.hawtdispatch.transport.HeartBeatMonitor v, v;
org.fusesource.mqtt.client.CallbackConnection v;
boolean v;
org.fusesource.mqtt.client.Callback v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.Callback;
v = v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected>;
if v == 0 goto label;
if v == null goto label;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onSuccess(java.lang.Object)>(null);
label:
return;
label:
v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected> = 1;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor>;
virtualinvoke v.<org.fusesource.hawtdispatch.transport.HeartBeatMonitor: void stop()>();
v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.HeartBeatMonitor heartBeatMonitor> = null;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
v = new org.fusesource.mqtt.client.CallbackConnection$11;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$11: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.client.Callback)>(v, v);
interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: void stop(org.fusesource.hawtdispatch.Task)>(v);
return;
}
public void publish(java.lang.String, byte[], org.fusesource.mqtt.client.QoS, boolean, org.fusesource.mqtt.client.Callback)
{
byte[] v;
org.fusesource.hawtbuf.Buffer v;
org.fusesource.mqtt.client.QoS v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v;
org.fusesource.hawtbuf.UTF8Buffer v;
java.lang.String v;
boolean v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: java.lang.String;
v := @parameter: byte[];
v := @parameter: org.fusesource.mqtt.client.QoS;
v := @parameter: boolean;
v := @parameter: org.fusesource.mqtt.client.Callback;
v = staticinvoke <org.fusesource.hawtbuf.Buffer: org.fusesource.hawtbuf.UTF8Buffer utf8(java.lang.String)>(v);
v = new org.fusesource.hawtbuf.Buffer;
specialinvoke v.<org.fusesource.hawtbuf.Buffer: void <init>(byte[])>(v);
virtualinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void publish(org.fusesource.hawtbuf.UTF8Buffer,org.fusesource.hawtbuf.Buffer,org.fusesource.mqtt.client.QoS,boolean,org.fusesource.mqtt.client.Callback)>(v, v, v, v, v);
return;
}
public void publish(org.fusesource.hawtbuf.UTF8Buffer, org.fusesource.hawtbuf.Buffer, org.fusesource.mqtt.client.QoS, boolean, org.fusesource.mqtt.client.Callback)
{
java.lang.IllegalStateException v;
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtbuf.Buffer v;
org.fusesource.mqtt.client.QoS v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.codec.PUBLISH v, v, v, v;
org.fusesource.mqtt.client.Callback v;
org.fusesource.hawtbuf.UTF8Buffer v;
boolean v, v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.hawtbuf.UTF8Buffer;
v := @parameter: org.fusesource.hawtbuf.Buffer;
v := @parameter: org.fusesource.mqtt.client.QoS;
v := @parameter: boolean;
v := @parameter: org.fusesource.mqtt.client.Callback;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void assertExecuting()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected>;
if v == 0 goto label;
v = staticinvoke <org.fusesource.mqtt.client.CallbackConnection: java.lang.IllegalStateException createDisconnectedError()>();
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
return;
label:
v = new org.fusesource.mqtt.codec.PUBLISH;
specialinvoke v.<org.fusesource.mqtt.codec.PUBLISH: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: org.fusesource.mqtt.codec.PUBLISH qos(org.fusesource.mqtt.client.QoS)>(v);
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: org.fusesource.mqtt.codec.PUBLISH retain(boolean)>(v);
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: org.fusesource.mqtt.codec.PUBLISH topicName(org.fusesource.hawtbuf.UTF8Buffer)>(v);
virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: org.fusesource.mqtt.codec.PUBLISH payload(org.fusesource.hawtbuf.Buffer)>(v);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void send(org.fusesource.mqtt.codec.MessageSupport$Acked,org.fusesource.mqtt.client.Callback)>(v, v);
return;
}
public void subscribe(org.fusesource.mqtt.client.Topic[], org.fusesource.mqtt.client.Callback)
{
org.fusesource.mqtt.codec.SUBSCRIBE v, v;
java.lang.IllegalStateException v, v;
org.fusesource.hawtdispatch.DispatchQueue v;
java.lang.IllegalArgumentException v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v;
org.fusesource.mqtt.client.CallbackConnection$12 v;
org.fusesource.mqtt.client.ExtendedListener v, v;
org.fusesource.mqtt.client.Topic[] v;
boolean v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.Topic[];
v := @parameter: org.fusesource.mqtt.client.Callback;
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("topics must not be null");
throw v;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void assertExecuting()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected>;
if v == 0 goto label;
v = staticinvoke <org.fusesource.mqtt.client.CallbackConnection: java.lang.IllegalStateException createDisconnectedError()>();
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
return;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener listener>;
v = <org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener DEFAULT_LISTENER>;
if v != v goto label;
v = staticinvoke <org.fusesource.mqtt.client.CallbackConnection: java.lang.IllegalStateException createListenerNotSetError()>();
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
goto label;
label:
v = new org.fusesource.mqtt.codec.SUBSCRIBE;
specialinvoke v.<org.fusesource.mqtt.codec.SUBSCRIBE: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.SUBSCRIBE: org.fusesource.mqtt.codec.SUBSCRIBE topics(org.fusesource.mqtt.client.Topic[])>(v);
v = new org.fusesource.mqtt.client.CallbackConnection$12;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$12: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.client.Callback,org.fusesource.mqtt.client.Topic[])>(v, v, v);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void send(org.fusesource.mqtt.codec.MessageSupport$Acked,org.fusesource.mqtt.client.Callback)>(v, v);
label:
return;
}
public void unsubscribe(org.fusesource.hawtbuf.UTF8Buffer[], org.fusesource.mqtt.client.Callback)
{
org.fusesource.hawtbuf.UTF8Buffer[] v;
java.lang.IllegalStateException v;
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v;
org.fusesource.mqtt.client.CallbackConnection$13 v;
org.fusesource.mqtt.codec.UNSUBSCRIBE v, v;
boolean v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.hawtbuf.UTF8Buffer[];
v := @parameter: org.fusesource.mqtt.client.Callback;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void assertExecuting()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected>;
if v == 0 goto label;
v = staticinvoke <org.fusesource.mqtt.client.CallbackConnection: java.lang.IllegalStateException createDisconnectedError()>();
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
return;
label:
v = new org.fusesource.mqtt.codec.UNSUBSCRIBE;
specialinvoke v.<org.fusesource.mqtt.codec.UNSUBSCRIBE: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.UNSUBSCRIBE: org.fusesource.mqtt.codec.UNSUBSCRIBE topics(org.fusesource.hawtbuf.UTF8Buffer[])>(v);
v = new org.fusesource.mqtt.client.CallbackConnection$13;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$13: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.client.Callback,org.fusesource.hawtbuf.UTF8Buffer[])>(v, v, v);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void send(org.fusesource.mqtt.codec.MessageSupport$Acked,org.fusesource.mqtt.client.Callback)>(v, v);
return;
}
private void send(org.fusesource.mqtt.codec.MessageSupport$Acked, org.fusesource.mqtt.client.Callback)
{
org.fusesource.mqtt.codec.MQTTFrame v;
org.fusesource.mqtt.codec.MessageSupport$Acked v;
org.fusesource.mqtt.client.QoS v, v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v;
short v;
org.fusesource.mqtt.client.CallbackConnection$Request v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.codec.MessageSupport$Acked;
v := @parameter: org.fusesource.mqtt.client.Callback;
v = 0;
v = interfaceinvoke v.<org.fusesource.mqtt.codec.MessageSupport$Acked: org.fusesource.mqtt.client.QoS qos()>();
v = <org.fusesource.mqtt.client.QoS: org.fusesource.mqtt.client.QoS AT_MOST_ONCE>;
if v == v goto label;
v = specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: short getNextMessageId()>();
interfaceinvoke v.<org.fusesource.mqtt.codec.MessageSupport$Acked: org.fusesource.mqtt.codec.MessageSupport$Acked messageId(short)>(v);
label:
v = new org.fusesource.mqtt.client.CallbackConnection$Request;
v = interfaceinvoke v.<org.fusesource.mqtt.codec.MessageSupport$Acked: org.fusesource.mqtt.codec.MQTTFrame encode()>();
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$Request: void <init>(int,org.fusesource.mqtt.codec.MQTTFrame,org.fusesource.mqtt.client.Callback)>(v, v, v);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void send(org.fusesource.mqtt.client.CallbackConnection$Request)>(v);
return;
}
private void send(org.fusesource.mqtt.client.CallbackConnection$Request)
{
java.lang.Throwable v, v;
org.fusesource.mqtt.client.MQTT v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v, v, v, v;
short v, v, v, v;
org.fusesource.hawtdispatch.transport.Transport v, v;
java.lang.Short v, v;
java.util.Map v, v;
java.util.LinkedList v, v;
boolean v, v;
org.fusesource.mqtt.codec.MQTTFrame v, v;
org.fusesource.mqtt.client.Tracer v;
org.fusesource.mqtt.client.CallbackConnection$Request v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.client.CallbackConnection$Request;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Throwable failure>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Throwable failure>;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: short id>;
if v == 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.Map requests>;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: short id>;
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow>;
v = virtualinvoke v.<java.util.LinkedList: boolean isEmpty()>();
if v == 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.codec.MQTTFrame frame>;
v = interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: boolean offer(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: org.fusesource.mqtt.client.Tracer tracer>;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.codec.MQTTFrame frame>;
virtualinvoke v.<org.fusesource.mqtt.client.Tracer: void onSend(org.fusesource.mqtt.codec.MQTTFrame)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: short id>;
if v != 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onSuccess(java.lang.Object)>(null);
goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.Map requests>;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: short id>;
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow>;
virtualinvoke v.<java.util.LinkedList: void addLast(java.lang.Object)>(v);
label:
return;
}
private short getNextMessageId()
{
java.lang.Throwable v;
short v, v, v;
int v;
java.lang.Object v;
org.fusesource.mqtt.client.CallbackConnection v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Object nextMessageIdLock>;
entermonitor v;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: short nextMessageId>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: short nextMessageId>;
v = v + 1;
v.<org.fusesource.mqtt.client.CallbackConnection: short nextMessageId> = v;
v = v.<org.fusesource.mqtt.client.CallbackConnection: short nextMessageId>;
if v != 0 goto label;
v.<org.fusesource.mqtt.client.CallbackConnection: short nextMessageId> = 1;
label:
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
private void drainOverflow()
{
java.lang.Throwable v;
org.fusesource.mqtt.client.MQTT v;
java.lang.Runnable v, v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v, v;
short v, v;
org.fusesource.hawtdispatch.transport.Transport v, v;
java.lang.Thread$UncaughtExceptionHandler v;
java.lang.Short v;
java.lang.Thread v, v;
java.util.Map v;
java.util.LinkedList v, v, v, v;
boolean v, v, v;
org.fusesource.mqtt.codec.MQTTFrame v, v;
org.fusesource.mqtt.client.Tracer v;
org.fusesource.hawtdispatch.DispatchQueue v;
java.lang.Object v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.DispatchQueue queue>;
interfaceinvoke v.<org.fusesource.hawtdispatch.DispatchQueue: void assertExecuting()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow>;
v = virtualinvoke v.<java.util.LinkedList: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
if v != null goto label;
label:
return;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow>;
v = virtualinvoke v.<java.util.LinkedList: java.lang.Object peek()>();
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.transport.Transport transport>;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.codec.MQTTFrame frame>;
v = interfaceinvoke v.<org.fusesource.hawtdispatch.transport.Transport: boolean offer(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: org.fusesource.mqtt.client.Tracer tracer>;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.codec.MQTTFrame frame>;
virtualinvoke v.<org.fusesource.mqtt.client.Tracer: void onSend(org.fusesource.mqtt.codec.MQTTFrame)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow>;
virtualinvoke v.<java.util.LinkedList: java.lang.Object removeFirst()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: short id>;
if v != 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onSuccess(java.lang.Object)>(null);
goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.Map requests>;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: short id>;
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow>;
v = virtualinvoke v.<java.util.LinkedList: boolean isEmpty()>();
if v == 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Runnable refiller>;
if v == null goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Runnable refiller>;
interfaceinvoke v.<java.lang.Runnable: void run()>();
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.Thread$UncaughtExceptionHandler getUncaughtExceptionHandler()>();
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
interfaceinvoke v.<java.lang.Thread$UncaughtExceptionHandler: void uncaughtException(java.lang.Thread,java.lang.Throwable)>(v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void completeRequest(short, byte, java.lang.Object)
{
java.lang.AssertionError v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v, v, v;
short v;
byte v, v;
java.lang.Short v;
java.util.Map v;
java.lang.String v;
boolean v;
org.fusesource.mqtt.codec.MQTTFrame v;
java.net.ProtocolException v;
java.lang.Object v, v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: short;
v := @parameter: byte;
v := @parameter: java.lang.Object;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.Map requests>;
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
if v == null goto label;
v = <org.fusesource.mqtt.client.CallbackConnection: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.codec.MQTTFrame frame>;
v = virtualinvoke v.<org.fusesource.mqtt.codec.MQTTFrame: byte messageType()>();
if v == v goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
if v == null goto label;
if v != null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onSuccess(java.lang.Object)>(null);
goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onSuccess(java.lang.Object)>(v);
goto label;
label:
v = new java.net.ProtocolException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (short)>(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[])>("Command from server contained an invalid message id: \u0001");
specialinvoke v.<java.net.ProtocolException: void <init>(java.lang.String)>(v);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void handleFatalFailure(java.lang.Throwable)>(v);
label:
return;
}
private void processFrame(org.fusesource.mqtt.codec.MQTTFrame)
{
byte[] v;
org.fusesource.mqtt.client.CallbackConnection v;
byte v, v;
java.lang.Short v;
org.fusesource.mqtt.codec.PUBCOMP v, v, v;
org.fusesource.mqtt.codec.PUBREL v, v, v;
org.fusesource.mqtt.codec.PUBLISH v, v;
org.fusesource.mqtt.codec.PUBREC v, v;
org.fusesource.mqtt.codec.PUBACK v, v;
org.fusesource.mqtt.codec.SUBACK v, v;
org.fusesource.mqtt.client.CallbackConnection$Request v, v;
java.lang.Throwable v;
java.util.HashMap v;
short v, v, v, v, v, v, v;
java.lang.String v;
org.fusesource.mqtt.codec.MQTTFrame v, v, v;
org.fusesource.mqtt.codec.UNSUBACK v, v;
java.net.ProtocolException v;
java.lang.Object v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.codec.MQTTFrame;
label:
v = virtualinvoke v.<org.fusesource.mqtt.codec.MQTTFrame: byte messageType()>();
tableswitch(v)
{
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
case 9: goto label;
case 10: goto label;
case 11: goto label;
case 12: goto label;
case 13: goto label;
default: goto label;
};
label:
v = new org.fusesource.mqtt.codec.PUBLISH;
specialinvoke v.<org.fusesource.mqtt.codec.PUBLISH: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: org.fusesource.mqtt.codec.PUBLISH decode(org.fusesource.mqtt.codec.MQTTFrame)>(v);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void toReceiver(org.fusesource.mqtt.codec.PUBLISH)>(v);
goto label;
label:
v = new org.fusesource.mqtt.codec.PUBREL;
specialinvoke v.<org.fusesource.mqtt.codec.PUBREL: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBREL: org.fusesource.mqtt.codec.PUBREL decode(org.fusesource.mqtt.codec.MQTTFrame)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.HashMap processed>;
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBREL: short messageId()>();
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
v = virtualinvoke v.<java.util.HashMap: java.lang.Object remove(java.lang.Object)>(v);
v = new org.fusesource.mqtt.codec.PUBCOMP;
specialinvoke v.<org.fusesource.mqtt.codec.PUBCOMP: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBREL: short messageId()>();
virtualinvoke v.<org.fusesource.mqtt.codec.PUBCOMP: org.fusesource.mqtt.codec.PUBCOMP messageId(short)>(v);
v = new org.fusesource.mqtt.client.CallbackConnection$Request;
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBCOMP: org.fusesource.mqtt.codec.MQTTFrame encode()>();
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$Request: void <init>(int,org.fusesource.mqtt.codec.MQTTFrame,org.fusesource.mqtt.client.Callback)>(0, v, null);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void send(org.fusesource.mqtt.client.CallbackConnection$Request)>(v);
if v == null goto label;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onSuccess(java.lang.Object)>(null);
goto label;
label:
v = new org.fusesource.mqtt.codec.PUBACK;
specialinvoke v.<org.fusesource.mqtt.codec.PUBACK: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBACK: org.fusesource.mqtt.codec.PUBACK decode(org.fusesource.mqtt.codec.MQTTFrame)>(v);
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBACK: short messageId()>();
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void completeRequest(short,byte,java.lang.Object)>(v, 3, null);
goto label;
label:
v = new org.fusesource.mqtt.codec.PUBREC;
specialinvoke v.<org.fusesource.mqtt.codec.PUBREC: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBREC: org.fusesource.mqtt.codec.PUBREC decode(org.fusesource.mqtt.codec.MQTTFrame)>(v);
v = new org.fusesource.mqtt.codec.PUBREL;
specialinvoke v.<org.fusesource.mqtt.codec.PUBREL: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBREC: short messageId()>();
virtualinvoke v.<org.fusesource.mqtt.codec.PUBREL: org.fusesource.mqtt.codec.PUBREL messageId(short)>(v);
v = new org.fusesource.mqtt.client.CallbackConnection$Request;
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBREL: org.fusesource.mqtt.codec.MQTTFrame encode()>();
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$Request: void <init>(int,org.fusesource.mqtt.codec.MQTTFrame,org.fusesource.mqtt.client.Callback)>(0, v, null);
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void send(org.fusesource.mqtt.client.CallbackConnection$Request)>(v);
goto label;
label:
v = new org.fusesource.mqtt.codec.PUBCOMP;
specialinvoke v.<org.fusesource.mqtt.codec.PUBCOMP: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBCOMP: org.fusesource.mqtt.codec.PUBCOMP decode(org.fusesource.mqtt.codec.MQTTFrame)>(v);
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBCOMP: short messageId()>();
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void completeRequest(short,byte,java.lang.Object)>(v, 3, null);
goto label;
label:
v = new org.fusesource.mqtt.codec.SUBACK;
specialinvoke v.<org.fusesource.mqtt.codec.SUBACK: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.SUBACK: org.fusesource.mqtt.codec.SUBACK decode(org.fusesource.mqtt.codec.MQTTFrame)>(v);
v = virtualinvoke v.<org.fusesource.mqtt.codec.SUBACK: short messageId()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.SUBACK: byte[] grantedQos()>();
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void completeRequest(short,byte,java.lang.Object)>(v, 8, v);
goto label;
label:
v = new org.fusesource.mqtt.codec.UNSUBACK;
specialinvoke v.<org.fusesource.mqtt.codec.UNSUBACK: void <init>()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.UNSUBACK: org.fusesource.mqtt.codec.UNSUBACK decode(org.fusesource.mqtt.codec.MQTTFrame)>(v);
v = virtualinvoke v.<org.fusesource.mqtt.codec.UNSUBACK: short messageId()>();
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void completeRequest(short,byte,java.lang.Object)>(v, 10, null);
goto label;
label:
v.<org.fusesource.mqtt.client.CallbackConnection: long pingedAt> = 0L;
goto label;
label:
v = new java.net.ProtocolException;
v = virtualinvoke v.<org.fusesource.mqtt.codec.MQTTFrame: byte messageType()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (byte)>(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[])>("Unexpected MQTT command type: \u0001");
specialinvoke v.<java.net.ProtocolException: void <init>(java.lang.String)>(v);
throw v;
label:
v := @caughtexception;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void handleFatalFailure(java.lang.Throwable)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void toReceiver(org.fusesource.mqtt.codec.PUBLISH)
{
java.lang.Throwable v;
java.util.HashMap v;
org.fusesource.hawtbuf.Buffer v;
org.fusesource.mqtt.client.QoS v;
org.fusesource.mqtt.client.CallbackConnection v;
org.fusesource.mqtt.client.Callback v;
short v;
org.fusesource.mqtt.client.CallbackConnection$14 v;
org.fusesource.mqtt.client.CallbackConnection$15 v;
int[] v;
org.fusesource.mqtt.client.CallbackConnection$16 v;
java.lang.Short v;
int v, v;
org.fusesource.mqtt.codec.PUBLISH v;
org.fusesource.mqtt.client.ExtendedListener v, v;
org.fusesource.hawtbuf.UTF8Buffer v;
java.lang.Object v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: org.fusesource.mqtt.codec.PUBLISH;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener listener>;
if v == null goto label;
label:
v = null;
v = <org.fusesource.mqtt.client.CallbackConnection$17: int[] $SwitchMap$org$fusesource$mqtt$client$QoS>;
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: org.fusesource.mqtt.client.QoS qos()>();
v = virtualinvoke v.<org.fusesource.mqtt.client.QoS: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
v = new org.fusesource.mqtt.client.CallbackConnection$14;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$14: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.codec.PUBLISH)>(v, v);
v = v;
goto label;
label:
v = new org.fusesource.mqtt.client.CallbackConnection$15;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$15: void <init>(org.fusesource.mqtt.client.CallbackConnection,org.fusesource.mqtt.codec.PUBLISH)>(v, v);
v = v;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.HashMap processed>;
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: short messageId()>();
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
v = virtualinvoke v.<java.util.HashMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
label:
return;
label:
v = new org.fusesource.mqtt.client.CallbackConnection$16;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$16: void <init>(org.fusesource.mqtt.client.CallbackConnection)>(v);
v = v;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener listener>;
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: org.fusesource.hawtbuf.UTF8Buffer topicName()>();
v = virtualinvoke v.<org.fusesource.mqtt.codec.PUBLISH: org.fusesource.hawtbuf.Buffer payload()>();
interfaceinvoke v.<org.fusesource.mqtt.client.ExtendedListener: void onPublish(org.fusesource.hawtbuf.UTF8Buffer,org.fusesource.hawtbuf.Buffer,org.fusesource.mqtt.client.Callback)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection: void handleFatalFailure(java.lang.Throwable)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void handleFatalFailure(java.lang.Throwable)
{
org.fusesource.mqtt.client.CallbackConnection v;
java.lang.Thread v, v;
java.util.Map v, v;
boolean v, v, v;
java.util.Collection v;
java.lang.Exception v;
org.fusesource.mqtt.client.ExtendedListener v, v;
java.lang.Throwable v, v, v, v, v;
java.lang.Object[] v;
org.fusesource.mqtt.client.MQTT v;
java.util.ArrayList v, v;
org.fusesource.mqtt.client.Callback v, v, v, v;
java.lang.Thread$UncaughtExceptionHandler v;
java.util.LinkedList v, v;
java.util.Iterator v, v;
org.fusesource.mqtt.client.Tracer v;
java.lang.Object v, v;
v := @this: org.fusesource.mqtt.client.CallbackConnection;
v := @parameter: java.lang.Throwable;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Throwable failure>;
if v != null goto label;
v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Throwable failure> = v;
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.MQTT mqtt>;
v = v.<org.fusesource.mqtt.client.MQTT: org.fusesource.mqtt.client.Tracer tracer>;
v = newarray (java.lang.Object)[1];
v[0] = v;
virtualinvoke v.<org.fusesource.mqtt.client.Tracer: void debug(java.lang.String,java.lang.Object[])>("Fatal connection failure: %s", v);
v = new java.util.ArrayList;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.Map requests>;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.Map requests>;
interfaceinvoke v.<java.util.Map: void clear()>();
v = virtualinvoke v.<java.util.ArrayList: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Throwable failure>;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
goto label;
label:
v = new java.util.ArrayList;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow>;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.util.LinkedList overflow>;
virtualinvoke v.<java.util.LinkedList: void clear()>();
v = virtualinvoke v.<java.util.ArrayList: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection$Request: org.fusesource.mqtt.client.Callback cb>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Throwable failure>;
interfaceinvoke v.<org.fusesource.mqtt.client.Callback: void onFailure(java.lang.Throwable)>(v);
goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener listener>;
if v == null goto label;
v = v.<org.fusesource.mqtt.client.CallbackConnection: boolean disconnected>;
if v != 0 goto label;
label:
v = v.<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener listener>;
v = v.<org.fusesource.mqtt.client.CallbackConnection: java.lang.Throwable failure>;
interfaceinvoke v.<org.fusesource.mqtt.client.ExtendedListener: void onFailure(java.lang.Throwable)>(v);
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.Thread$UncaughtExceptionHandler getUncaughtExceptionHandler()>();
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
interfaceinvoke v.<java.lang.Thread$UncaughtExceptionHandler: void uncaughtException(java.lang.Thread,java.lang.Throwable)>(v, v);
label:
return;
catch java.lang.Exception from label to label with label;
}
private static java.lang.IllegalStateException createListenerNotSetError()
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("No connection listener set to handle message received from the server.");
v = virtualinvoke v.<java.lang.IllegalStateException: java.lang.Throwable fillInStackTrace()>();
return v;
}
private static java.lang.IllegalStateException createDisconnectedError()
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Disconnected");
v = virtualinvoke v.<java.lang.IllegalStateException: java.lang.Throwable fillInStackTrace()>();
return v;
}
private static java.lang.String hex(java.net.SocketAddress)
{
byte[] v;
java.net.SocketAddress v;
org.fusesource.hawtbuf.Buffer v;
java.net.InetAddress v;
int v;
java.lang.String v, v, v;
boolean v;
v := @parameter: java.net.SocketAddress;
v = v instanceof java.net.InetSocketAddress;
if v == 0 goto label;
v = new org.fusesource.hawtbuf.Buffer;
v = virtualinvoke v.<java.net.InetSocketAddress: java.net.InetAddress getAddress()>();
v = virtualinvoke v.<java.net.InetAddress: byte[] getAddress()>();
specialinvoke v.<org.fusesource.hawtbuf.Buffer: void <init>(byte[])>(v);
v = staticinvoke <org.fusesource.hawtbuf.HexSupport: java.lang.String toHexFromBuffer(org.fusesource.hawtbuf.Buffer)>(v);
v = virtualinvoke v.<java.net.InetSocketAddress: int getPort()>();
v = staticinvoke <java.lang.Integer: java.lang.String toHexString(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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");
return v;
label:
return "";
}
static void <clinit>()
{
org.fusesource.mqtt.client.CallbackConnection$1 v;
org.fusesource.hawtdispatch.Task v;
java.lang.Class v;
boolean v, v;
v = class "Lorg/fusesource/mqtt/client/CallbackConnection;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<org.fusesource.mqtt.client.CallbackConnection: boolean $assertionsDisabled> = v;
v = new org.fusesource.mqtt.client.CallbackConnection$1;
specialinvoke v.<org.fusesource.mqtt.client.CallbackConnection$1: void <init>()>();
<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.mqtt.client.ExtendedListener DEFAULT_LISTENER> = v;
v = <org.fusesource.hawtdispatch.Dispatch: org.fusesource.hawtdispatch.Task NOOP>;
<org.fusesource.mqtt.client.CallbackConnection: org.fusesource.hawtdispatch.Task NOOP> = v;
return;
}
}