public class org.apache.dubbo.rpc.AsyncContextImpl extends java.lang.Object implements org.apache.dubbo.rpc.AsyncContext
{
private final java.util.concurrent.atomic.AtomicBoolean started;
private final java.util.concurrent.atomic.AtomicBoolean stopped;
private java.util.concurrent.CompletableFuture future;
private org.apache.dubbo.rpc.RpcContext storedContext;
private org.apache.dubbo.rpc.RpcContext storedServerContext;
public void <init>()
{
org.apache.dubbo.rpc.RpcContext v, v;
java.util.concurrent.atomic.AtomicBoolean v, v;
org.apache.dubbo.rpc.AsyncContextImpl v;
v := @this: org.apache.dubbo.rpc.AsyncContextImpl;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.atomic.AtomicBoolean started> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.atomic.AtomicBoolean stopped> = v;
v = staticinvoke <org.apache.dubbo.rpc.RpcContext: org.apache.dubbo.rpc.RpcContext getContext()>();
v.<org.apache.dubbo.rpc.AsyncContextImpl: org.apache.dubbo.rpc.RpcContext storedContext> = v;
v = staticinvoke <org.apache.dubbo.rpc.RpcContext: org.apache.dubbo.rpc.RpcContext getServerContext()>();
v.<org.apache.dubbo.rpc.AsyncContextImpl: org.apache.dubbo.rpc.RpcContext storedServerContext> = v;
return;
}
public void write(java.lang.Object)
{
java.lang.IllegalStateException v;
org.apache.dubbo.rpc.AsyncContextImpl v;
java.util.concurrent.CompletableFuture v, v;
java.lang.Object v;
boolean v, v, v;
v := @this: org.apache.dubbo.rpc.AsyncContextImpl;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<org.apache.dubbo.rpc.AsyncContextImpl: boolean isAsyncStarted()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.rpc.AsyncContextImpl: boolean stop()>();
if v == 0 goto label;
v = v instanceof java.lang.Throwable;
if v == 0 goto label;
v = v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.CompletableFuture future>;
virtualinvoke v.<java.util.concurrent.CompletableFuture: boolean completeExceptionally(java.lang.Throwable)>(v);
goto label;
label:
v = v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.CompletableFuture future>;
virtualinvoke v.<java.util.concurrent.CompletableFuture: boolean complete(java.lang.Object)>(v);
goto label;
label:
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("The async response has probably been wrote back by another thread, or the asyncContext has been closed.");
throw v;
label:
return;
}
public boolean isAsyncStarted()
{
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.dubbo.rpc.AsyncContextImpl v;
boolean v;
v := @this: org.apache.dubbo.rpc.AsyncContextImpl;
v = v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.atomic.AtomicBoolean started>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
return v;
}
public boolean stop()
{
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.dubbo.rpc.AsyncContextImpl v;
boolean v;
v := @this: org.apache.dubbo.rpc.AsyncContextImpl;
v = v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.atomic.AtomicBoolean stopped>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
return v;
}
public void start()
{
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.dubbo.rpc.AsyncContextImpl v;
java.util.concurrent.CompletableFuture v;
boolean v;
v := @this: org.apache.dubbo.rpc.AsyncContextImpl;
v = v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.atomic.AtomicBoolean started>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v == 0 goto label;
v = new java.util.concurrent.CompletableFuture;
specialinvoke v.<java.util.concurrent.CompletableFuture: void <init>()>();
v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.CompletableFuture future> = v;
label:
return;
}
public void signalContextSwitch()
{
org.apache.dubbo.rpc.AsyncContextImpl v;
org.apache.dubbo.rpc.RpcContext v, v;
v := @this: org.apache.dubbo.rpc.AsyncContextImpl;
v = v.<org.apache.dubbo.rpc.AsyncContextImpl: org.apache.dubbo.rpc.RpcContext storedContext>;
staticinvoke <org.apache.dubbo.rpc.RpcContext: void restoreContext(org.apache.dubbo.rpc.RpcContext)>(v);
v = v.<org.apache.dubbo.rpc.AsyncContextImpl: org.apache.dubbo.rpc.RpcContext storedServerContext>;
staticinvoke <org.apache.dubbo.rpc.RpcContext: void restoreServerContext(org.apache.dubbo.rpc.RpcContext)>(v);
return;
}
public java.util.concurrent.CompletableFuture getInternalFuture()
{
org.apache.dubbo.rpc.AsyncContextImpl v;
java.util.concurrent.CompletableFuture v;
v := @this: org.apache.dubbo.rpc.AsyncContextImpl;
v = v.<org.apache.dubbo.rpc.AsyncContextImpl: java.util.concurrent.CompletableFuture future>;
return v;
}
}