public class org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer extends java.lang.Object implements org.apache.dubbo.remoting.exchange.ExchangeServer
{
protected final org.apache.dubbo.common.logger.Logger logger;
private final org.apache.dubbo.remoting.RemotingServer server;
private java.util.concurrent.atomic.AtomicBoolean closed;
private static final org.apache.dubbo.common.timer.HashedWheelTimer IDLE_CHECK_TIMER;
private org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask closeTimerTask;
public void <init>(org.apache.dubbo.remoting.RemotingServer)
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.common.logger.Logger v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
java.util.concurrent.atomic.AtomicBoolean v;
java.lang.Class v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: org.apache.dubbo.remoting.RemotingServer;
specialinvoke v.<java.lang.Object: void <init>()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(v);
v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.logger.Logger logger> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>(boolean)>(0);
v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.util.concurrent.atomic.AtomicBoolean closed> = v;
staticinvoke <org.apache.dubbo.common.utils.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "server == null");
v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server> = v;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.URL getUrl()>();
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void startIdleCheckTask(org.apache.dubbo.common.URL)>(v);
return;
}
public org.apache.dubbo.remoting.RemotingServer getServer()
{
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
return v;
}
public boolean isClosed()
{
boolean v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: boolean isClosed()>();
return v;
}
private boolean isRunning()
{
java.util.Iterator v;
java.util.Collection v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.util.Collection getChannels()>();
v = interfaceinvoke v.<java.util.Collection: 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.<org.apache.dubbo.remoting.Channel: boolean isConnected()>();
if v == 0 goto label;
return 1;
label:
return 0;
}
public void close()
{
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void doClose()>();
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: void close()>();
return;
}
public void close(int)
{
org.apache.dubbo.common.logger.Logger v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
long v, v, v;
org.apache.dubbo.common.URL v;
byte v;
java.lang.InterruptedException v;
int v;
java.lang.String v;
boolean v, v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: int;
virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void startClose()>();
if v <= 0 goto label;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.URL getUrl()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: boolean getParameter(java.lang.String,boolean)>("channel.readonly.send", 1);
if v == 0 goto label;
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void sendChannelReadOnlyEvent()>();
label:
v = specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: boolean isRunning()>();
if v == 0 goto label;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v - v;
v = v cmp v;
if v >= 0 goto label;
label:
staticinvoke <java.lang.Thread: void sleep(long)>(10L);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.logger.Logger logger>;
v = virtualinvoke v.<java.lang.InterruptedException: java.lang.String getMessage()>();
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void doClose()>();
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: void close(int)>(v);
return;
catch java.lang.InterruptedException from label to label with label;
}
public void startClose()
{
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: void startClose()>();
return;
}
private void sendChannelReadOnlyEvent()
{
org.apache.dubbo.remoting.RemotingException v;
java.util.Iterator v;
org.apache.dubbo.common.logger.Logger v;
java.util.Collection v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
org.apache.dubbo.remoting.exchange.Request v;
org.apache.dubbo.common.URL v;
java.lang.Object v;
java.lang.String v;
boolean v, v, v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = new org.apache.dubbo.remoting.exchange.Request;
specialinvoke v.<org.apache.dubbo.remoting.exchange.Request: void <init>()>();
virtualinvoke v.<org.apache.dubbo.remoting.exchange.Request: void setEvent(java.lang.String)>("R");
virtualinvoke v.<org.apache.dubbo.remoting.exchange.Request: void setTwoWay(boolean)>(0);
v = staticinvoke <org.apache.dubbo.common.Version: java.lang.String getProtocolVersion()>();
virtualinvoke v.<org.apache.dubbo.remoting.exchange.Request: void setVersion(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.util.Collection getChannels()>();
v = interfaceinvoke v.<java.util.Collection: 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()>();
label:
v = interfaceinvoke v.<org.apache.dubbo.remoting.Channel: boolean isConnected()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.URL getUrl()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: boolean getParameter(java.lang.String,boolean)>("channel.readonly.sent", 1);
interfaceinvoke v.<org.apache.dubbo.remoting.Channel: void send(java.lang.Object,boolean)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.String,java.lang.Throwable)>("send cannot write message error.", v);
goto label;
label:
return;
catch org.apache.dubbo.remoting.RemotingException from label to label with label;
}
private void doClose()
{
java.util.concurrent.atomic.AtomicBoolean v;
boolean v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.util.concurrent.atomic.AtomicBoolean closed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v != 0 goto label;
return;
label:
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void cancelCloseTask()>();
return;
}
private void cancelCloseTask()
{
org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask v, v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask closeTimerTask>;
if v == null goto label;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask closeTimerTask>;
virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask: void cancel()>();
label:
return;
}
public java.util.Collection getExchangeChannels()
{
java.util.Iterator v;
java.util.Collection v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
java.util.ArrayList v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: java.util.Collection getChannels()>();
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: boolean isNotEmpty(java.util.Collection)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Collection: 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 = staticinvoke <org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel getOrAddChannel(org.apache.dubbo.remoting.Channel)>(v);
interfaceinvoke v.<java.util.Collection: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
public org.apache.dubbo.remoting.exchange.ExchangeChannel getExchangeChannel(java.net.InetSocketAddress)
{
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
java.net.InetSocketAddress v;
org.apache.dubbo.remoting.Channel v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: java.net.InetSocketAddress;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: org.apache.dubbo.remoting.Channel getChannel(java.net.InetSocketAddress)>(v);
v = staticinvoke <org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel getOrAddChannel(org.apache.dubbo.remoting.Channel)>(v);
return v;
}
public java.util.Collection getChannels()
{
java.util.Collection v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.util.Collection getExchangeChannels()>();
return v;
}
public org.apache.dubbo.remoting.Channel getChannel(java.net.InetSocketAddress)
{
org.apache.dubbo.remoting.exchange.ExchangeChannel v;
java.net.InetSocketAddress v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: java.net.InetSocketAddress;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.exchange.ExchangeChannel getExchangeChannel(java.net.InetSocketAddress)>(v);
return v;
}
public boolean isBound()
{
boolean v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: boolean isBound()>();
return v;
}
public java.net.InetSocketAddress getLocalAddress()
{
java.net.InetSocketAddress v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: java.net.InetSocketAddress getLocalAddress()>();
return v;
}
public org.apache.dubbo.common.URL getUrl()
{
org.apache.dubbo.common.URL v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: org.apache.dubbo.common.URL getUrl()>();
return v;
}
public org.apache.dubbo.remoting.ChannelHandler getChannelHandler()
{
org.apache.dubbo.remoting.ChannelHandler v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: org.apache.dubbo.remoting.ChannelHandler getChannelHandler()>();
return v;
}
public void reset(org.apache.dubbo.common.URL)
{
java.lang.Throwable v;
org.apache.dubbo.common.logger.Logger v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
org.apache.dubbo.common.URL v, v, v;
int v, v, v, v;
java.lang.String v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: org.apache.dubbo.common.URL;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: void reset(org.apache.dubbo.common.URL)>(v);
label:
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.URL getUrl()>();
v = staticinvoke <org.apache.dubbo.remoting.utils.UrlUtils: int getHeartbeat(org.apache.dubbo.common.URL)>(v);
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.URL getUrl()>();
v = staticinvoke <org.apache.dubbo.remoting.utils.UrlUtils: int getIdleTimeout(org.apache.dubbo.common.URL)>(v);
v = staticinvoke <org.apache.dubbo.remoting.utils.UrlUtils: int getHeartbeat(org.apache.dubbo.common.URL)>(v);
v = staticinvoke <org.apache.dubbo.remoting.utils.UrlUtils: int getIdleTimeout(org.apache.dubbo.common.URL)>(v);
if v != v goto label;
if v == v goto label;
label:
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void cancelCloseTask()>();
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void startIdleCheckTask(org.apache.dubbo.common.URL)>(v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.logger.Logger logger>;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void error(java.lang.String,java.lang.Throwable)>(v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void reset(org.apache.dubbo.common.Parameters)
{
org.apache.dubbo.common.URL v, v;
java.util.Map v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
org.apache.dubbo.common.Parameters v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: org.apache.dubbo.common.Parameters;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.URL getUrl()>();
v = virtualinvoke v.<org.apache.dubbo.common.Parameters: java.util.Map getParameters()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL addParameters(java.util.Map)>(v);
virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: void reset(org.apache.dubbo.common.URL)>(v);
return;
}
public void send(java.lang.Object) throws org.apache.dubbo.remoting.RemotingException
{
org.apache.dubbo.remoting.RemotingException v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
java.util.concurrent.atomic.AtomicBoolean v;
java.net.InetSocketAddress v, v;
java.lang.Object v;
java.lang.String v;
boolean v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: java.lang.Object;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.util.concurrent.atomic.AtomicBoolean closed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new org.apache.dubbo.remoting.RemotingException;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.net.InetSocketAddress getLocalAddress()>();
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.net.InetSocketAddress getLocalAddress()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Object,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[])>("Failed to send message \u, cause: The server \u is closed!");
specialinvoke v.<org.apache.dubbo.remoting.RemotingException: void <init>(java.net.InetSocketAddress,java.net.InetSocketAddress,java.lang.String)>(v, null, v);
throw v;
label:
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: void send(java.lang.Object)>(v);
return;
}
public void send(java.lang.Object, boolean) throws org.apache.dubbo.remoting.RemotingException
{
org.apache.dubbo.remoting.RemotingException v;
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
java.util.concurrent.atomic.AtomicBoolean v;
java.net.InetSocketAddress v, v;
java.lang.Object v;
java.lang.String v;
boolean v, v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: java.lang.Object;
v := @parameter: boolean;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.util.concurrent.atomic.AtomicBoolean closed>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new org.apache.dubbo.remoting.RemotingException;
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.net.InetSocketAddress getLocalAddress()>();
v = virtualinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: java.net.InetSocketAddress getLocalAddress()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Object,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[])>("Failed to send message \u, cause: The server \u is closed!");
specialinvoke v.<org.apache.dubbo.remoting.RemotingException: void <init>(java.net.InetSocketAddress,java.net.InetSocketAddress,java.lang.String)>(v, null, v);
throw v;
label:
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: void send(java.lang.Object,boolean)>(v, v);
return;
}
private long calculateLeastDuration(int)
{
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
int v, v, v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: int;
v = v / 3;
if v > 0 goto label;
return 1000L;
label:
v = v / 3;
return v;
}
private void startIdleCheckTask(org.apache.dubbo.common.URL)
{
org.apache.dubbo.remoting.RemotingServer v;
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer v;
long v;
org.apache.dubbo.common.timer.HashedWheelTimer v;
java.util.concurrent.TimeUnit v;
org.apache.dubbo.common.URL v;
org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask v;
java.lang.Long v;
org.apache.dubbo.remoting.exchange.support.header.AbstractTimerTask$ChannelProvider v;
int v;
boolean v;
v := @this: org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer;
v := @parameter: org.apache.dubbo.common.URL;
v = v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.RemotingServer server>;
v = interfaceinvoke v.<org.apache.dubbo.remoting.RemotingServer: boolean canHandleIdle()>();
if v != 0 goto label;
v = staticinvoke <org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer$lambda_startIdleCheckTask_0__362: org.apache.dubbo.remoting.exchange.support.header.AbstractTimerTask$ChannelProvider bootstrap$(org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer)>(v);
v = staticinvoke <org.apache.dubbo.remoting.utils.UrlUtils: int getIdleTimeout(org.apache.dubbo.common.URL)>(v);
v = specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: long calculateLeastDuration(int)>(v);
v = new org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
specialinvoke v.<org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask: void <init>(org.apache.dubbo.remoting.exchange.support.header.AbstractTimerTask$ChannelProvider,java.lang.Long,int)>(v, v, v);
v.<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.remoting.exchange.support.header.CloseTimerTask closeTimerTask> = v;
v = <org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.timer.HashedWheelTimer IDLE_CHECK_TIMER>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<org.apache.dubbo.common.timer.HashedWheelTimer: org.apache.dubbo.common.timer.Timeout newTimeout(org.apache.dubbo.common.timer.TimerTask,long,java.util.concurrent.TimeUnit)>(v, v, v);
label:
return;
}
static void <clinit>()
{
java.util.concurrent.TimeUnit v;
org.apache.dubbo.common.timer.HashedWheelTimer v;
org.apache.dubbo.common.utils.NamedThreadFactory 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-server-idleCheck", 1);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
specialinvoke v.<org.apache.dubbo.common.timer.HashedWheelTimer: void <init>(java.util.concurrent.ThreadFactory,long,java.util.concurrent.TimeUnit,int)>(v, 1L, v, 128);
<org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeServer: org.apache.dubbo.common.timer.HashedWheelTimer IDLE_CHECK_TIMER> = v;
return;
}
}