final class org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient extends java.lang.Object implements org.apache.dubbo.remoting.exchange.ExchangeClient
{
private final org.apache.dubbo.common.URL url;
private final java.util.concurrent.atomic.AtomicInteger referenceCount;
private org.apache.dubbo.remoting.exchange.ExchangeClient client;
public void <init>(org.apache.dubbo.remoting.exchange.ExchangeClient)
{
org.apache.dubbo.common.URL v;
java.util.concurrent.atomic.AtomicInteger v, v;
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: org.apache.dubbo.remoting.exchange.ExchangeClient;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>(int)>(0);
v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: java.util.concurrent.atomic.AtomicInteger referenceCount> = v;
v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client> = v;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: java.util.concurrent.atomic.AtomicInteger referenceCount>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: org.apache.dubbo.common.URL getUrl()>();
v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.common.URL url> = v;
return;
}
public void reset(org.apache.dubbo.common.URL)
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: org.apache.dubbo.common.URL;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void reset(org.apache.dubbo.common.URL)>(v);
return;
}
public java.util.concurrent.CompletableFuture request(java.lang.Object) throws org.apache.dubbo.remoting.RemotingException
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.Object v;
java.util.concurrent.CompletableFuture v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.Object;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: java.util.concurrent.CompletableFuture request(java.lang.Object)>(v);
return v;
}
public org.apache.dubbo.common.URL getUrl()
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: org.apache.dubbo.common.URL getUrl()>();
return v;
}
public java.net.InetSocketAddress getRemoteAddress()
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.net.InetSocketAddress v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: java.net.InetSocketAddress getRemoteAddress()>();
return v;
}
public org.apache.dubbo.remoting.ChannelHandler getChannelHandler()
{
org.apache.dubbo.remoting.ChannelHandler v;
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: org.apache.dubbo.remoting.ChannelHandler getChannelHandler()>();
return v;
}
public java.util.concurrent.CompletableFuture request(java.lang.Object, int) throws org.apache.dubbo.remoting.RemotingException
{
int v;
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.Object v;
java.util.concurrent.CompletableFuture v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.Object;
v := @parameter: int;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: java.util.concurrent.CompletableFuture request(java.lang.Object,int)>(v, v);
return v;
}
public java.util.concurrent.CompletableFuture request(java.lang.Object, java.util.concurrent.ExecutorService) throws org.apache.dubbo.remoting.RemotingException
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.Object v;
java.util.concurrent.CompletableFuture v;
java.util.concurrent.ExecutorService v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.Object;
v := @parameter: java.util.concurrent.ExecutorService;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: java.util.concurrent.CompletableFuture request(java.lang.Object,java.util.concurrent.ExecutorService)>(v, v);
return v;
}
public java.util.concurrent.CompletableFuture request(java.lang.Object, int, java.util.concurrent.ExecutorService) throws org.apache.dubbo.remoting.RemotingException
{
int v;
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.Object v;
java.util.concurrent.CompletableFuture v;
java.util.concurrent.ExecutorService v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.Object;
v := @parameter: int;
v := @parameter: java.util.concurrent.ExecutorService;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: java.util.concurrent.CompletableFuture request(java.lang.Object,int,java.util.concurrent.ExecutorService)>(v, v, v);
return v;
}
public boolean isConnected()
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
boolean v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: boolean isConnected()>();
return v;
}
public void reconnect() throws org.apache.dubbo.remoting.RemotingException
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void reconnect()>();
return;
}
public java.net.InetSocketAddress getLocalAddress()
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.net.InetSocketAddress v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: java.net.InetSocketAddress getLocalAddress()>();
return v;
}
public boolean hasAttribute(java.lang.String)
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.String v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
boolean v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: boolean hasAttribute(java.lang.String)>(v);
return v;
}
public void reset(org.apache.dubbo.common.Parameters)
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.common.Parameters v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: org.apache.dubbo.common.Parameters;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void reset(org.apache.dubbo.common.Parameters)>(v);
return;
}
public void send(java.lang.Object) throws org.apache.dubbo.remoting.RemotingException
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.Object v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.Object;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void send(java.lang.Object)>(v);
return;
}
public org.apache.dubbo.remoting.exchange.ExchangeHandler getExchangeHandler()
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.remoting.exchange.ExchangeHandler v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeHandler getExchangeHandler()>();
return v;
}
public java.lang.Object getAttribute(java.lang.String)
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.Object v;
java.lang.String v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: java.lang.Object getAttribute(java.lang.String)>(v);
return v;
}
public void send(java.lang.Object, boolean) throws org.apache.dubbo.remoting.RemotingException
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.Object v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
boolean v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.Object;
v := @parameter: boolean;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void send(java.lang.Object,boolean)>(v, v);
return;
}
public void setAttribute(java.lang.String, java.lang.Object)
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.Object v;
java.lang.String v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Object;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void setAttribute(java.lang.String,java.lang.Object)>(v, v);
return;
}
public void removeAttribute(java.lang.String)
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
java.lang.String v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: java.lang.String;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void removeAttribute(java.lang.String)>(v);
return;
}
public void close()
{
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
virtualinvoke v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: void close(int)>(0);
return;
}
public void close(int)
{
java.util.concurrent.atomic.AtomicInteger v;
int v, v;
org.apache.dubbo.remoting.exchange.ExchangeClient v, v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v := @parameter: int;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: java.util.concurrent.atomic.AtomicInteger referenceCount>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int decrementAndGet()>();
if v > 0 goto label;
if v != 0 goto label;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void close()>();
goto label;
label:
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void close(int)>(v);
label:
specialinvoke v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: void replaceWithLazyClient()>();
label:
return;
}
public void startClose()
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: void startClose()>();
return;
}
private void replaceWithLazyClient()
{
org.apache.dubbo.remoting.exchange.ExchangeClient v, v, v;
org.apache.dubbo.rpc.protocol.dubbo.LazyConnectExchangeClient v;
org.apache.dubbo.common.URL v, v, v, v;
java.lang.Boolean v, v;
java.lang.String v;
boolean v, v, v;
org.apache.dubbo.remoting.exchange.ExchangeHandler v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.common.URL url>;
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameter(java.lang.String,boolean)>("connect.lazy.initial.state", v);
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = virtualinvoke v.<java.lang.Boolean: java.lang.String toString()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameter(java.lang.String,java.lang.String)>("send.reconnect", v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameter(java.lang.String,boolean)>("lazyclient_request_with_warning", 1);
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = v instanceof org.apache.dubbo.rpc.protocol.dubbo.LazyConnectExchangeClient;
if v == 0 goto label;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: boolean isClosed()>();
if v == 0 goto label;
label:
v = new org.apache.dubbo.rpc.protocol.dubbo.LazyConnectExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeHandler getExchangeHandler()>();
specialinvoke v.<org.apache.dubbo.rpc.protocol.dubbo.LazyConnectExchangeClient: void <init>(org.apache.dubbo.common.URL,org.apache.dubbo.remoting.exchange.ExchangeHandler)>(v, v);
v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client> = v;
label:
return;
}
public boolean isClosed()
{
org.apache.dubbo.remoting.exchange.ExchangeClient v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
boolean v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: org.apache.dubbo.remoting.exchange.ExchangeClient client>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.exchange.ExchangeClient: boolean isClosed()>();
return v;
}
public void incrementAndGetCount()
{
java.util.concurrent.atomic.AtomicInteger v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: java.util.concurrent.atomic.AtomicInteger referenceCount>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
return;
}
public int getCount()
{
int v;
java.util.concurrent.atomic.AtomicInteger v;
org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient v;
v := @this: org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient;
v = v.<org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient: java.util.concurrent.atomic.AtomicInteger referenceCount>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
return v;
}
}