public class org.apache.dubbo.remoting.exchange.support.DefaultFuture extends java.util.concurrent.CompletableFuture
{
private static final org.apache.dubbo.common.logger.Logger logger;
private static final java.util.Map CHANNELS;
private static final java.util.Map FUTURES;
public static final org.apache.dubbo.common.timer.Timer TIME_OUT_TIMER;
private final java.lang.Long id;
private final org.apache.dubbo.remoting.Channel channel;
private final org.apache.dubbo.remoting.exchange.Request request;
private final int timeout;
private final long start;
private volatile long sent;
private org.apache.dubbo.common.timer.Timeout timeoutCheckTask;
private java.util.concurrent.ExecutorService executor;
public java.util.concurrent.ExecutorService getExecutor()
{
java.util.concurrent.ExecutorService v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.concurrent.ExecutorService executor>;
return v;
}
public void setExecutor(java.util.concurrent.ExecutorService)
{
java.util.concurrent.ExecutorService v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v := @parameter: java.util.concurrent.ExecutorService;
v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.concurrent.ExecutorService executor> = v;
return;
}
private void <init>(org.apache.dubbo.remoting.Channel, org.apache.dubbo.remoting.exchange.Request, int)
{
org.apache.dubbo.remoting.exchange.Request v;
long v, v;
org.apache.dubbo.remoting.Channel v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
org.apache.dubbo.common.URL v;
java.lang.Long v, v, v;
java.util.Map v, v;
int v, v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v := @parameter: org.apache.dubbo.remoting.Channel;
v := @parameter: org.apache.dubbo.remoting.exchange.Request;
v := @parameter: int;
specialinvoke v.<java.util.concurrent.CompletableFuture: void <init>()>();
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long start> = v;
v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.Channel channel> = v;
v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.exchange.Request request> = v;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Request: long getId()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.lang.Long id> = v;
if v <= 0 goto label;
v = v;
goto label;
label:
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: org.apache.dubbo.common.URL getUrl()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: int getPositiveParameter(java.lang.String,int)>("timeout", 1000);
label:
v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: int timeout> = v;
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map FUTURES>;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.lang.Long id>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map CHANNELS>;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.lang.Long id>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
return;
}
private static void timeoutCheck(org.apache.dubbo.remoting.exchange.support.DefaultFuture)
{
long v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
java.util.concurrent.TimeUnit v;
java.lang.Long v;
org.apache.dubbo.common.timer.Timer v;
int v;
org.apache.dubbo.common.timer.Timeout v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask v;
v := @parameter: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = new org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask;
v = specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long getId()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask: void <init>(java.lang.Long)>(v);
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.common.timer.Timer TIME_OUT_TIMER>;
v = specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: int getTimeout()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = interfaceinvoke v.<org.apache.dubbo.common.timer.Timer: org.apache.dubbo.common.timer.Timeout newTimeout(org.apache.dubbo.common.timer.TimerTask,long,java.util.concurrent.TimeUnit)>(v, v, v);
v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.common.timer.Timeout timeoutCheckTask> = v;
return;
}
public static org.apache.dubbo.remoting.exchange.support.DefaultFuture newFuture(org.apache.dubbo.remoting.Channel, org.apache.dubbo.remoting.exchange.Request, int, java.util.concurrent.ExecutorService)
{
int v;
org.apache.dubbo.remoting.exchange.Request v;
org.apache.dubbo.remoting.Channel v;
java.util.concurrent.ExecutorService v;
boolean v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @parameter: org.apache.dubbo.remoting.Channel;
v := @parameter: org.apache.dubbo.remoting.exchange.Request;
v := @parameter: int;
v := @parameter: java.util.concurrent.ExecutorService;
v = new org.apache.dubbo.remoting.exchange.support.DefaultFuture;
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: void <init>(org.apache.dubbo.remoting.Channel,org.apache.dubbo.remoting.exchange.Request,int)>(v, v, v);
virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: void setExecutor(java.util.concurrent.ExecutorService)>(v);
v = v instanceof org.apache.dubbo.common.threadpool.ThreadlessExecutor;
if v == 0 goto label;
virtualinvoke v.<org.apache.dubbo.common.threadpool.ThreadlessExecutor: void setWaitingFuture(java.util.concurrent.CompletableFuture)>(v);
label:
staticinvoke <org.apache.dubbo.remoting.exchange.support.DefaultFuture: void timeoutCheck(org.apache.dubbo.remoting.exchange.support.DefaultFuture)>(v);
return v;
}
public static org.apache.dubbo.remoting.exchange.support.DefaultFuture getFuture(long)
{
java.lang.Long v;
java.util.Map v;
java.lang.Object v;
long v;
v := @parameter: long;
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map FUTURES>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
return v;
}
public static boolean hasFuture(org.apache.dubbo.remoting.Channel)
{
org.apache.dubbo.remoting.Channel v;
boolean v;
java.util.Map v;
v := @parameter: org.apache.dubbo.remoting.Channel;
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map CHANNELS>;
v = interfaceinvoke v.<java.util.Map: boolean containsValue(java.lang.Object)>(v);
return v;
}
public static void sent(org.apache.dubbo.remoting.Channel, org.apache.dubbo.remoting.exchange.Request)
{
java.lang.Long v;
java.util.Map v;
org.apache.dubbo.remoting.exchange.Request v;
java.lang.Object v;
long v;
org.apache.dubbo.remoting.Channel v;
v := @parameter: org.apache.dubbo.remoting.Channel;
v := @parameter: org.apache.dubbo.remoting.exchange.Request;
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map FUTURES>;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Request: long getId()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: void doSent()>();
label:
return;
}
public static void closeChannel(org.apache.dubbo.remoting.Channel)
{
org.apache.dubbo.remoting.exchange.Request v;
long v, v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
java.util.Map v;
java.lang.String v;
java.util.concurrent.ExecutorService v;
boolean v, v, v, v;
java.util.Iterator v;
java.util.Set v;
org.apache.dubbo.remoting.Channel v;
java.lang.Object v, v, v;
org.apache.dubbo.remoting.exchange.Response v;
v := @parameter: org.apache.dubbo.remoting.Channel;
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map CHANNELS>;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: 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 = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = staticinvoke <org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.exchange.support.DefaultFuture getFuture(long)>(v);
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: boolean isDone()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.concurrent.ExecutorService getExecutor()>();
if v == null goto label;
v = interfaceinvoke v.<java.util.concurrent.ExecutorService: boolean isTerminated()>();
if v != 0 goto label;
interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.List shutdownNow()>();
label:
v = new org.apache.dubbo.remoting.exchange.Response;
v = specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long getId()>();
specialinvoke v.<org.apache.dubbo.remoting.exchange.Response: void <init>(long)>(v);
virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: void setStatus(byte)>(35);
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.exchange.Request getRequest()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.dubbo.remoting.Channel,org.apache.dubbo.remoting.exchange.Request)>(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[])>("Channel \u is inactive. Directly return the unFinished request : \u0001");
virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: void setErrorMessage(java.lang.String)>(v);
staticinvoke <org.apache.dubbo.remoting.exchange.support.DefaultFuture: void received(org.apache.dubbo.remoting.Channel,org.apache.dubbo.remoting.exchange.Response)>(v, v);
goto label;
label:
return;
}
public static void received(org.apache.dubbo.remoting.Channel, org.apache.dubbo.remoting.exchange.Response)
{
org.apache.dubbo.remoting.Channel v;
org.apache.dubbo.remoting.exchange.Response v;
v := @parameter: org.apache.dubbo.remoting.Channel;
v := @parameter: org.apache.dubbo.remoting.exchange.Response;
staticinvoke <org.apache.dubbo.remoting.exchange.support.DefaultFuture: void received(org.apache.dubbo.remoting.Channel,org.apache.dubbo.remoting.exchange.Response,boolean)>(v, v, 0);
return;
}
public static void received(org.apache.dubbo.remoting.Channel, org.apache.dubbo.remoting.exchange.Response, boolean)
{
java.lang.Throwable v;
java.util.Date v;
java.text.SimpleDateFormat v;
long v, v, v;
byte v;
java.lang.Long v, v, v;
java.util.Map v, v, v;
java.lang.String v, v, v;
boolean v;
org.apache.dubbo.common.logger.Logger v;
java.net.InetSocketAddress v, v;
org.apache.dubbo.remoting.Channel v;
org.apache.dubbo.common.timer.Timeout v;
java.lang.Object v;
org.apache.dubbo.remoting.exchange.Response v;
v := @parameter: org.apache.dubbo.remoting.Channel;
v := @parameter: org.apache.dubbo.remoting.exchange.Response;
v := @parameter: boolean;
label:
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map FUTURES>;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: long getId()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
if v == null goto label;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.common.timer.Timeout timeoutCheckTask>;
if v != 0 goto label;
interfaceinvoke v.<org.apache.dubbo.common.timer.Timeout: boolean cancel()>();
label:
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: void doReceived(org.apache.dubbo.remoting.exchange.Response)>(v);
goto label;
label:
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.common.logger.Logger logger>;
v = new java.text.SimpleDateFormat;
specialinvoke v.<java.text.SimpleDateFormat: void <init>(java.lang.String)>("yyyy-MM-dd HH:mm:ss.SSS");
v = new java.util.Date;
specialinvoke v.<java.util.Date: void <init>()>();
v = virtualinvoke v.<java.text.SimpleDateFormat: java.lang.String format(java.util.Date)>(v);
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: byte getStatus()>();
if v != null goto label;
v = "";
goto label;
label:
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: java.net.InetSocketAddress getLocalAddress()>();
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: java.net.InetSocketAddress getRemoteAddress()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.net.InetSocketAddress,java.net.InetSocketAddress)>(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[])>(", channel: \u -> \u0001");
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,byte,java.lang.String)>(v, 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[])>("The timeout response finally returned at \u, response status is \u0001\u, please check provider side for detailed result.");
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String)>(v);
label:
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map CHANNELS>;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: long getId()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map CHANNELS>;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: long getId()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public boolean cancel(boolean)
{
long v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
java.lang.Long v, v, v;
java.util.Map v, v;
org.apache.dubbo.remoting.exchange.Response v;
boolean v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v := @parameter: boolean;
v = new org.apache.dubbo.remoting.exchange.Response;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.lang.Long id>;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
specialinvoke v.<org.apache.dubbo.remoting.exchange.Response: void <init>(long)>(v);
virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: void setStatus(byte)>(90);
virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: void setErrorMessage(java.lang.String)>("request future has been canceled.");
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: void doReceived(org.apache.dubbo.remoting.exchange.Response)>(v);
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map FUTURES>;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.lang.Long id>;
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map CHANNELS>;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.lang.Long id>;
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
return 1;
}
public void cancel()
{
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: boolean cancel(boolean)>(1);
return;
}
private void doReceived(org.apache.dubbo.remoting.exchange.Response)
{
org.apache.dubbo.remoting.RemotingException v;
java.lang.IllegalStateException v, v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
byte v, v, v, v;
java.lang.String v, v;
java.util.concurrent.ExecutorService v, v, v;
boolean v, v, v;
org.apache.dubbo.remoting.Channel v, v;
java.lang.Object v;
org.apache.dubbo.remoting.exchange.Response v;
org.apache.dubbo.remoting.TimeoutException v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v := @parameter: org.apache.dubbo.remoting.exchange.Response;
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("response cannot be null");
throw v;
label:
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: byte getStatus()>();
if v != 20 goto label;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: java.lang.Object getResult()>();
virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: boolean complete(java.lang.Object)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: byte getStatus()>();
if v == 30 goto label;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: byte getStatus()>();
if v != 31 goto label;
label:
v = new org.apache.dubbo.remoting.TimeoutException;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: byte getStatus()>();
if v != 31 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.Channel channel>;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: java.lang.String getErrorMessage()>();
specialinvoke v.<org.apache.dubbo.remoting.TimeoutException: void <init>(boolean,org.apache.dubbo.remoting.Channel,java.lang.String)>(v, v, v);
virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: boolean completeExceptionally(java.lang.Throwable)>(v);
goto label;
label:
v = new org.apache.dubbo.remoting.RemotingException;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.Channel channel>;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Response: java.lang.String getErrorMessage()>();
specialinvoke v.<org.apache.dubbo.remoting.RemotingException: void <init>(org.apache.dubbo.remoting.Channel,java.lang.String)>(v, v);
virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: boolean completeExceptionally(java.lang.Throwable)>(v);
label:
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.concurrent.ExecutorService executor>;
if v == null goto label;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.concurrent.ExecutorService executor>;
v = v instanceof org.apache.dubbo.common.threadpool.ThreadlessExecutor;
if v == 0 goto label;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.concurrent.ExecutorService executor>;
v = virtualinvoke v.<org.apache.dubbo.common.threadpool.ThreadlessExecutor: boolean isWaiting()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("The result has returned, but the biz thread is still waiting which is not an expected state, interrupt the thread manually by returning an exception.");
virtualinvoke v.<org.apache.dubbo.common.threadpool.ThreadlessExecutor: void notifyReturn(java.lang.Throwable)>(v);
label:
return;
}
private long getId()
{
long v;
java.lang.Long v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.lang.Long id>;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
return v;
}
private org.apache.dubbo.remoting.Channel getChannel()
{
org.apache.dubbo.remoting.Channel v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.Channel channel>;
return v;
}
private boolean isSent()
{
byte v;
long v;
boolean v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long sent>;
v = v cmp 0L;
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public org.apache.dubbo.remoting.exchange.Request getRequest()
{
org.apache.dubbo.remoting.exchange.Request v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.exchange.Request request>;
return v;
}
private int getTimeout()
{
int v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: int timeout>;
return v;
}
private void doSent()
{
long v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long sent> = v;
return;
}
private java.lang.String getTimeoutMessage(boolean)
{
java.util.Date v, v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
byte v, v;
boolean v, v;
java.net.InetSocketAddress v, v;
org.apache.dubbo.remoting.Channel v, v;
java.text.SimpleDateFormat v, v;
org.apache.dubbo.remoting.exchange.Request v;
long v, v, v, v, v, v, v, v, v, v, v;
int v;
java.lang.String v, v, v, v, v, v;
org.apache.dubbo.common.logger.Logger v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v := @parameter: boolean;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long sent>;
v = v cmp 0L;
if v <= 0 goto label;
v = "Waiting server-side response timeout";
goto label;
label:
v = "Sending request timeout in client-side";
label:
if v == 0 goto label;
v = " by scan timer";
goto label;
label:
v = "";
label:
v = new java.text.SimpleDateFormat;
specialinvoke v.<java.text.SimpleDateFormat: void <init>(java.lang.String)>("yyyy-MM-dd HH:mm:ss.SSS");
v = new java.util.Date;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long start>;
specialinvoke v.<java.util.Date: void <init>(long)>(v);
v = virtualinvoke v.<java.text.SimpleDateFormat: java.lang.String format(java.util.Date)>(v);
v = new java.text.SimpleDateFormat;
specialinvoke v.<java.text.SimpleDateFormat: void <init>(java.lang.String)>("yyyy-MM-dd HH:mm:ss.SSS");
v = new java.util.Date;
specialinvoke v.<java.util.Date: void <init>(long)>(v);
v = virtualinvoke v.<java.text.SimpleDateFormat: java.lang.String format(java.util.Date)>(v);
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long sent>;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long sent>;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long start>;
v = v - v;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long sent>;
v = v - v;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long,long)>(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[])>(" client elapsed: \u ms, server elapsed: \u0001");
goto label;
label:
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: long start>;
v = v - v;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long)>(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[])>(" elapsed: \u0001");
label:
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: int timeout>;
v = <org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.common.logger.Logger logger>;
v = interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.exchange.Request request>;
goto label;
label:
v = specialinvoke v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.exchange.Request getRequestWithoutData()>();
label:
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.Channel channel>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: java.net.InetSocketAddress getLocalAddress()>();
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.Channel channel>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: java.net.InetSocketAddress getRemoteAddress()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,int,org.apache.dubbo.remoting.exchange.Request,java.net.InetSocketAddress,java.net.InetSocketAddress)>(v, v, v, v, v, v, v, 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\u. start time: \u, end time: \u,\u ms, timeout: \u ms, request: \u, channel: \u -> \u0001");
return v;
}
private org.apache.dubbo.remoting.exchange.Request getRequestWithoutData()
{
org.apache.dubbo.remoting.exchange.Request v, v;
org.apache.dubbo.remoting.exchange.support.DefaultFuture v;
v := @this: org.apache.dubbo.remoting.exchange.support.DefaultFuture;
v = v.<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.remoting.exchange.Request request>;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.Request: org.apache.dubbo.remoting.exchange.Request copy()>();
virtualinvoke v.<org.apache.dubbo.remoting.exchange.Request: void setData(java.lang.Object)>(null);
return v;
}
static void <clinit>()
{
java.util.concurrent.TimeUnit v;
org.apache.dubbo.common.logger.Logger v;
java.util.concurrent.ConcurrentHashMap v, v;
org.apache.dubbo.common.timer.HashedWheelTimer v;
org.apache.dubbo.common.utils.NamedThreadFactory v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/remoting/exchange/support/DefaultFuture;");
<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.common.logger.Logger logger> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map CHANNELS> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
<org.apache.dubbo.remoting.exchange.support.DefaultFuture: java.util.Map FUTURES> = v;
v = new org.apache.dubbo.common.timer.HashedWheelTimer;
v = new org.apache.dubbo.common.utils.NamedThreadFactory;
specialinvoke v.<org.apache.dubbo.common.utils.NamedThreadFactory: void <init>(java.lang.String,boolean)>("dubbo-future-timeout", 1);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
specialinvoke v.<org.apache.dubbo.common.timer.HashedWheelTimer: void <init>(java.util.concurrent.ThreadFactory,long,java.util.concurrent.TimeUnit)>(v, 30L, v);
<org.apache.dubbo.remoting.exchange.support.DefaultFuture: org.apache.dubbo.common.timer.Timer TIME_OUT_TIMER> = v;
return;
}
}