public class org.apache.activemq.transport.FutureResponse extends java.lang.Object
{
private static final org.slf4j.Logger LOG;
private final org.apache.activemq.transport.ResponseCallback responseCallback;
private final org.apache.activemq.transport.TransportFilter transportFilter;
private final java.util.concurrent.ArrayBlockingQueue responseSlot;
public void <init>(org.apache.activemq.transport.ResponseCallback)
{
org.apache.activemq.transport.FutureResponse v;
org.apache.activemq.transport.ResponseCallback v;
v := @this: org.apache.activemq.transport.FutureResponse;
v := @parameter: org.apache.activemq.transport.ResponseCallback;
specialinvoke v.<org.apache.activemq.transport.FutureResponse: void <init>(org.apache.activemq.transport.ResponseCallback,org.apache.activemq.transport.TransportFilter)>(v, null);
return;
}
public void <init>(org.apache.activemq.transport.ResponseCallback, org.apache.activemq.transport.TransportFilter)
{
java.util.concurrent.ArrayBlockingQueue v;
org.apache.activemq.transport.ResponseCallback v;
org.apache.activemq.transport.FutureResponse v;
org.apache.activemq.transport.TransportFilter v;
v := @this: org.apache.activemq.transport.FutureResponse;
v := @parameter: org.apache.activemq.transport.ResponseCallback;
v := @parameter: org.apache.activemq.transport.TransportFilter;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.ArrayBlockingQueue;
specialinvoke v.<java.util.concurrent.ArrayBlockingQueue: void <init>(int)>(1);
v.<org.apache.activemq.transport.FutureResponse: java.util.concurrent.ArrayBlockingQueue responseSlot> = v;
v.<org.apache.activemq.transport.FutureResponse: org.apache.activemq.transport.ResponseCallback responseCallback> = v;
v.<org.apache.activemq.transport.FutureResponse: org.apache.activemq.transport.TransportFilter transportFilter> = v;
return;
}
public org.apache.activemq.command.Response getResult() throws java.io.IOException
{
java.lang.Throwable v;
java.io.InterruptedIOException v;
java.util.concurrent.ArrayBlockingQueue v;
java.lang.InterruptedException v;
java.lang.Thread v, v;
org.apache.activemq.transport.FutureResponse v;
java.lang.Object v;
boolean v;
v := @this: org.apache.activemq.transport.FutureResponse;
v = staticinvoke <java.lang.Thread: boolean interrupted()>();
label:
v = v.<org.apache.activemq.transport.FutureResponse: java.util.concurrent.ArrayBlockingQueue responseSlot>;
v = virtualinvoke v.<java.util.concurrent.ArrayBlockingQueue: java.lang.Object take()>();
label:
if v == 0 goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
return v;
label:
v := @caughtexception;
v = specialinvoke v.<org.apache.activemq.transport.FutureResponse: java.io.InterruptedIOException dealWithInterrupt(java.lang.InterruptedException)>(v);
throw v;
label:
v := @caughtexception;
if v == 0 goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
throw v;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private java.io.InterruptedIOException dealWithInterrupt(java.lang.InterruptedException)
{
java.lang.Throwable v;
org.slf4j.Logger v, v;
java.io.InterruptedIOException v;
java.lang.InterruptedException v;
java.lang.Thread v, v;
org.apache.activemq.transport.FutureResponse v;
org.apache.activemq.transport.TransportFilter v, v;
java.lang.String v, v;
boolean v;
v := @this: org.apache.activemq.transport.FutureResponse;
v := @parameter: java.lang.InterruptedException;
v = <org.apache.activemq.transport.FutureResponse: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.transport.FutureResponse: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.InterruptedException)>(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[])>("Operation interrupted: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = new java.io.InterruptedIOException;
v = virtualinvoke v.<java.lang.InterruptedException: java.lang.String getMessage()>();
specialinvoke v.<java.io.InterruptedIOException: void <init>(java.lang.String)>(v);
virtualinvoke v.<java.io.InterruptedIOException: java.lang.Throwable initCause(java.lang.Throwable)>(v);
label:
v = v.<org.apache.activemq.transport.FutureResponse: org.apache.activemq.transport.TransportFilter transportFilter>;
if v == null goto label;
v = v.<org.apache.activemq.transport.FutureResponse: org.apache.activemq.transport.TransportFilter transportFilter>;
virtualinvoke v.<org.apache.activemq.transport.TransportFilter: void onException(java.io.IOException)>(v);
label:
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
public org.apache.activemq.command.Response getResult(int) throws java.io.IOException
{
java.lang.Throwable v;
org.apache.activemq.transport.RequestTimedOutIOException v;
java.io.InterruptedIOException v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.ArrayBlockingQueue v;
java.lang.InterruptedException v;
java.lang.Thread v, v;
int v;
org.apache.activemq.transport.FutureResponse v;
java.lang.Object v;
boolean v;
v := @this: org.apache.activemq.transport.FutureResponse;
v := @parameter: int;
v = staticinvoke <java.lang.Thread: boolean interrupted()>();
label:
v = v.<org.apache.activemq.transport.FutureResponse: java.util.concurrent.ArrayBlockingQueue responseSlot>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = virtualinvoke v.<java.util.concurrent.ArrayBlockingQueue: java.lang.Object poll(long,java.util.concurrent.TimeUnit)>(v, v);
if v != null goto label;
if v <= 0 goto label;
v = new org.apache.activemq.transport.RequestTimedOutIOException;
specialinvoke v.<org.apache.activemq.transport.RequestTimedOutIOException: void <init>()>();
throw v;
label:
if v == 0 goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
return v;
label:
v := @caughtexception;
v = specialinvoke v.<org.apache.activemq.transport.FutureResponse: java.io.InterruptedIOException dealWithInterrupt(java.lang.InterruptedException)>(v);
throw v;
label:
v := @caughtexception;
if v == 0 goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
throw v;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void set(org.apache.activemq.command.Response)
{
org.apache.activemq.command.Response v;
java.util.concurrent.ArrayBlockingQueue v;
org.apache.activemq.transport.ResponseCallback v, v;
org.apache.activemq.transport.FutureResponse v;
boolean v;
v := @this: org.apache.activemq.transport.FutureResponse;
v := @parameter: org.apache.activemq.command.Response;
v = v.<org.apache.activemq.transport.FutureResponse: java.util.concurrent.ArrayBlockingQueue responseSlot>;
v = virtualinvoke v.<java.util.concurrent.ArrayBlockingQueue: boolean offer(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.apache.activemq.transport.FutureResponse: org.apache.activemq.transport.ResponseCallback responseCallback>;
if v == null goto label;
v = v.<org.apache.activemq.transport.FutureResponse: org.apache.activemq.transport.ResponseCallback responseCallback>;
interfaceinvoke v.<org.apache.activemq.transport.ResponseCallback: void onCompletion(org.apache.activemq.transport.FutureResponse)>(v);
label:
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/FutureResponse;");
<org.apache.activemq.transport.FutureResponse: org.slf4j.Logger LOG> = v;
return;
}
}