public class io.netty.handler.traffic.GlobalChannelTrafficShapingHandler extends io.netty.handler.traffic.AbstractTrafficShapingHandler
{
private static final io.netty.util.internal.logging.InternalLogger logger;
final java.util.concurrent.ConcurrentMap channelQueues;
private final java.util.concurrent.atomic.AtomicLong queuesSize;
private final java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes;
private final java.util.concurrent.atomic.AtomicLong cumulativeReadBytes;
volatile long maxGlobalWriteSize;
private volatile long writeChannelLimit;
private volatile long readChannelLimit;
private static final float DEFAULT_DEVIATION;
private static final float MAX_DEVIATION;
private static final float DEFAULT_SLOWDOWN;
private static final float DEFAULT_ACCELERATION;
private volatile float maxDeviation;
private volatile float accelerationFactor;
private volatile float slowDownFactor;
private volatile boolean readDeviationActive;
private volatile boolean writeDeviationActive;
void createGlobalTrafficCounter(java.util.concurrent.ScheduledExecutorService)
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.ScheduledExecutorService v;
long v;
io.netty.handler.traffic.GlobalChannelTrafficCounter v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void setMaxDeviation(float,float,float)>(0.1F, 0.4F, -0.1F);
staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNullWithIAE(java.lang.Object,java.lang.String)>(v, "executor");
v = new io.netty.handler.traffic.GlobalChannelTrafficCounter;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long checkInterval>;
specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficCounter: void <init>(io.netty.handler.traffic.GlobalChannelTrafficShapingHandler,java.util.concurrent.ScheduledExecutorService,java.lang.String,long)>(v, v, "GlobalChannelTC", v);
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void setTrafficCounter(io.netty.handler.traffic.TrafficCounter)>(v);
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void start()>();
return;
}
protected int userDefinedWritabilityIndex()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
return 3;
}
public void <init>(java.util.concurrent.ScheduledExecutorService, long, long, long, long, long, long)
{
long v, v, v, v, v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v, v, v;
java.util.concurrent.ScheduledExecutorService v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: void <init>(long,long,long,long)>(v, v, v, v);
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.util.concurrent.ConcurrentMap newConcurrentHashMap()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeReadBytes> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxGlobalWriteSize> = 419430400L;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void createGlobalTrafficCounter(java.util.concurrent.ScheduledExecutorService)>(v);
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long writeChannelLimit> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long readChannelLimit> = v;
return;
}
public void <init>(java.util.concurrent.ScheduledExecutorService, long, long, long, long, long)
{
long v, v, v, v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v, v, v;
java.util.concurrent.ScheduledExecutorService v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: void <init>(long,long,long)>(v, v, v);
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.util.concurrent.ConcurrentMap newConcurrentHashMap()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeReadBytes> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxGlobalWriteSize> = 419430400L;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long writeChannelLimit> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long readChannelLimit> = v;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void createGlobalTrafficCounter(java.util.concurrent.ScheduledExecutorService)>(v);
return;
}
public void <init>(java.util.concurrent.ScheduledExecutorService, long, long, long, long)
{
long v, v, v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v, v, v;
java.util.concurrent.ScheduledExecutorService v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: void <init>(long,long)>(v, v);
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.util.concurrent.ConcurrentMap newConcurrentHashMap()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeReadBytes> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxGlobalWriteSize> = 419430400L;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long writeChannelLimit> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long readChannelLimit> = v;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void createGlobalTrafficCounter(java.util.concurrent.ScheduledExecutorService)>(v);
return;
}
public void <init>(java.util.concurrent.ScheduledExecutorService, long)
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v, v, v;
java.util.concurrent.ScheduledExecutorService v;
long v;
java.util.concurrent.ConcurrentMap v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v := @parameter: long;
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: void <init>(long)>(v);
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.util.concurrent.ConcurrentMap newConcurrentHashMap()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeReadBytes> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxGlobalWriteSize> = 419430400L;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void createGlobalTrafficCounter(java.util.concurrent.ScheduledExecutorService)>(v);
return;
}
public void <init>(java.util.concurrent.ScheduledExecutorService)
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v, v, v;
java.util.concurrent.ScheduledExecutorService v;
java.util.concurrent.ConcurrentMap v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: void <init>()>();
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.util.concurrent.ConcurrentMap newConcurrentHashMap()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeReadBytes> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxGlobalWriteSize> = 419430400L;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void createGlobalTrafficCounter(java.util.concurrent.ScheduledExecutorService)>(v);
return;
}
public float maxDeviation()
{
float v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float maxDeviation>;
return v;
}
public float accelerationFactor()
{
float v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float accelerationFactor>;
return v;
}
public float slowDownFactor()
{
float v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float slowDownFactor>;
return v;
}
public void setMaxDeviation(float, float, float)
{
java.lang.IllegalArgumentException v, v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
byte v, v;
float v, v, v, v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: float;
v := @parameter: float;
v := @parameter: float;
v = v cmpl 0.4F;
if v <= 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("maxDeviation must be <= 0.4");
throw v;
label:
staticinvoke <io.netty.util.internal.ObjectUtil: float checkPositiveOrZero(float,java.lang.String)>(v, "slowDownFactor");
v = v cmpl 0.0F;
if v <= 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("accelerationFactor must be <= 0");
throw v;
label:
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float maxDeviation> = v;
v = 1.0F + v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float accelerationFactor> = v;
v = 1.0F + v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float slowDownFactor> = v;
return;
}
private void computeDeviationCumulativeBytes()
{
io.netty.handler.traffic.TrafficCounter v, v;
long v, v, v, v, v, v, v, v;
java.util.concurrent.ConcurrentMap v, v;
byte v, v, v, v, v, v;
int v;
boolean v, v, v, v, v;
java.util.Iterator v;
java.util.Collection v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v, v;
java.lang.Object v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = 0L;
v = 0L;
v = 9223372036854775807L;
v = 9223372036854775807L;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
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 = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
v = virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: long cumulativeWrittenBytes()>();
v = v cmp v;
if v >= 0 goto label;
v = v;
label:
v = v cmp v;
if v <= 0 goto label;
v = v;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
v = virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: long cumulativeReadBytes()>();
v = v cmp v;
if v >= 0 goto label;
v = v;
label:
v = v cmp v;
if v <= 0 goto label;
v = v;
goto label;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: int size()>();
if v <= 1 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v == 0 goto label;
v = v / 2L;
v = v cmp v;
if v >= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: boolean readDeviationActive> = v;
if v == 0 goto label;
v = v / 2L;
v = v cmp v;
if v >= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: boolean writeDeviationActive> = v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: void set(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeReadBytes>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: void set(long)>(v);
return;
}
protected void doAccounting(io.netty.handler.traffic.TrafficCounter)
{
io.netty.handler.traffic.TrafficCounter v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.handler.traffic.TrafficCounter;
specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void computeDeviationCumulativeBytes()>();
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: void doAccounting(io.netty.handler.traffic.TrafficCounter)>(v);
return;
}
private long computeBalancedWait(float, float, long)
{
long v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
byte v, v, v, v;
float v, v, v, v, v, v, v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: float;
v := @parameter: float;
v := @parameter: long;
v = v cmpl 0.0F;
if v != 0 goto label;
return v;
label:
v = v / v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float maxDeviation>;
v = v cmpl v;
if v <= 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float maxDeviation>;
v = 1.0F - v;
v = v cmpg v;
if v >= 0 goto label;
return v;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float slowDownFactor>;
v = v cmp 10L;
if v >= 0 goto label;
v = 10L;
goto label;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: float accelerationFactor>;
label:
v = v * v;
return v;
}
public long getMaxGlobalWriteSize()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
long v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxGlobalWriteSize>;
return v;
}
public void setMaxGlobalWriteSize(long)
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
long v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: long;
v = staticinvoke <io.netty.util.internal.ObjectUtil: long checkPositive(long,java.lang.String)>(v, "maxGlobalWriteSize");
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxGlobalWriteSize> = v;
return;
}
public long queuesSize()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v;
long v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
return v;
}
public void configureChannel(long, long)
{
io.netty.handler.traffic.TrafficCounter v;
java.util.Iterator v;
java.util.Collection v;
long v, v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.lang.Object v;
boolean v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: long;
v := @parameter: long;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long writeChannelLimit> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long readChannelLimit> = v;
v = staticinvoke <io.netty.handler.traffic.TrafficCounter: long milliSecondFromNano()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
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 = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void resetAccounting(long)>(v);
goto label;
label:
return;
}
public long getWriteChannelLimit()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
long v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long writeChannelLimit>;
return v;
}
public void setWriteChannelLimit(long)
{
io.netty.handler.traffic.TrafficCounter v;
java.util.Iterator v;
java.util.Collection v;
long v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.lang.Object v;
boolean v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: long;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long writeChannelLimit> = v;
v = staticinvoke <io.netty.handler.traffic.TrafficCounter: long milliSecondFromNano()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
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 = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void resetAccounting(long)>(v);
goto label;
label:
return;
}
public long getReadChannelLimit()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
long v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long readChannelLimit>;
return v;
}
public void setReadChannelLimit(long)
{
io.netty.handler.traffic.TrafficCounter v;
java.util.Iterator v;
java.util.Collection v;
long v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.lang.Object v;
boolean v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: long;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long readChannelLimit> = v;
v = staticinvoke <io.netty.handler.traffic.TrafficCounter: long milliSecondFromNano()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
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 = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void resetAccounting(long)>(v);
goto label;
label:
return;
}
public final void release()
{
io.netty.handler.traffic.TrafficCounter v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.TrafficCounter trafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void stop()>();
return;
}
private io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel getOrSetPerChannel(io.netty.channel.ChannelHandlerContext)
{
io.netty.handler.traffic.TrafficCounter v;
long v, v, v;
java.lang.Integer v;
java.util.concurrent.ConcurrentMap v, v;
io.netty.channel.ChannelHandlerContext v;
int v, v;
java.lang.String v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel v;
io.netty.channel.Channel v, v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.lang.Object v;
java.util.ArrayDeque v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel;
specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: void <init>()>();
v = v;
v = new java.util.ArrayDeque;
specialinvoke v.<java.util.ArrayDeque: void <init>()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue> = v;
v = new io.netty.handler.traffic.TrafficCounter;
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(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[])>("ChannelTC\u0001");
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long checkInterval>;
specialinvoke v.<io.netty.handler.traffic.TrafficCounter: void <init>(io.netty.handler.traffic.AbstractTrafficShapingHandler,java.util.concurrent.ScheduledExecutorService,java.lang.String,long)>(v, null, v, v);
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter> = v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize> = 0L;
v = staticinvoke <io.netty.handler.traffic.TrafficCounter: long milliSecondFromNano()>();
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long lastReadTimestamp> = v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long lastReadTimestamp>;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long lastWriteTimestamp> = v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return v;
}
public void handlerAdded(io.netty.channel.ChannelHandlerContext) throws java.lang.Exception
{
io.netty.handler.traffic.TrafficCounter v;
io.netty.channel.ChannelHandlerContext v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel getOrSetPerChannel(io.netty.channel.ChannelHandlerContext)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.TrafficCounter trafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void resetCumulativeTime()>();
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: void handlerAdded(io.netty.channel.ChannelHandlerContext)>(v);
return;
}
public void handlerRemoved(io.netty.channel.ChannelHandlerContext) throws java.lang.Exception
{
io.netty.handler.traffic.TrafficCounter v, v, v;
java.lang.Integer v;
io.netty.channel.ChannelPromise v;
boolean v, v, v, v;
java.lang.Throwable v;
long v, v, v, v, v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.channel.ChannelHandlerContext v;
int v;
java.util.Iterator v, v;
io.netty.channel.Channel v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v, v;
java.lang.Object v, v, v, v, v, v, v;
java.util.ArrayDeque v, v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.TrafficCounter trafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void resetCumulativeTime()>();
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
if v == null goto label;
entermonitor v;
label:
v = interfaceinvoke v.<io.netty.channel.Channel: boolean isActive()>();
if v == 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
v = virtualinvoke v.<java.util.ArrayDeque: 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 = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: java.lang.Object toSend>;
v = virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long calculateSize(java.lang.Object)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.TrafficCounter trafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void bytesRealWriteFlowControl(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void bytesRealWriteFlowControl(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize>;
v = v - v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize> = v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize>;
v = neg v;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long addAndGet(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: java.lang.Object toSend>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: io.netty.channel.ChannelPromise promise>;
interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.ChannelFuture write(java.lang.Object,io.netty.channel.ChannelPromise)>(v, v);
goto label;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize>;
v = neg v;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long addAndGet(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
v = virtualinvoke v.<java.util.ArrayDeque: 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 = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: java.lang.Object toSend>;
v = v instanceof io.netty.buffer.ByteBuf;
if v == 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: java.lang.Object toSend>;
virtualinvoke v.<io.netty.buffer.ByteBuf: boolean release()>();
goto label;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
virtualinvoke v.<java.util.ArrayDeque: void clear()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void releaseWriteSuspended(io.netty.channel.ChannelHandlerContext)>(v);
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void releaseReadSuspended(io.netty.channel.ChannelHandlerContext)>(v);
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: void handlerRemoved(io.netty.channel.ChannelHandlerContext)>(v);
return;
catch java.lang.Throwable from label to label with label;
}
public void channelRead(io.netty.channel.ChannelHandlerContext, java.lang.Object) throws java.lang.Exception
{
io.netty.handler.traffic.TrafficCounter v, v, v;
io.netty.util.AttributeKey v, v;
java.lang.Integer v;
byte v, v, v, v, v;
io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask v;
boolean v, v, v, v, v, v, v, v, v;
io.netty.util.internal.logging.InternalLogger v, v, v, v;
io.netty.util.concurrent.EventExecutor v;
long v, v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.channel.ChannelHandlerContext v;
int v;
java.lang.Boolean v;
java.lang.String v, v;
io.netty.util.Attribute v, v;
io.netty.channel.Channel v, v;
java.util.concurrent.TimeUnit v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v;
io.netty.channel.ChannelConfig v;
java.lang.Object v, v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long calculateSize(java.lang.Object)>(v);
v = staticinvoke <io.netty.handler.traffic.TrafficCounter: long milliSecondFromNano()>();
v = v cmp 0L;
if v <= 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.TrafficCounter trafficCounter>;
v = virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long getReadLimit()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
v = virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: long readTimeToWait(long,long,long,long)>(v, v, v, v);
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
v = 0L;
if v == null goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long readChannelLimit>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
v = virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: long readTimeToWait(long,long,long,long)>(v, v, v, v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: boolean readDeviationActive>;
if v == 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
v = virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: long cumulativeReadBytes()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeReadBytes>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp 0L;
if v > 0 goto label;
v = 0L;
label:
v = v cmp v;
if v >= 0 goto label;
v = v;
label:
v = specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long computeBalancedWait(float,float,long)>(v, v, v);
label:
v = v cmp v;
if v >= 0 goto label;
v = v;
label:
v = virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long checkWaitReadTime(io.netty.channel.ChannelHandlerContext,long,long)>(v, v, v);
v = v cmp 10L;
if v < 0 goto label;
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.ChannelConfig config()>();
v = <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: boolean isAutoRead()>();
v = staticinvoke <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: boolean isHandlerActive(io.netty.channel.ChannelHandlerContext)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long,boolean,boolean)>(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[])>("Read Suspend: \u0001:\u0001:\u0001");
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String)>(v);
label:
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: boolean isAutoRead()>();
if v == 0 goto label;
v = staticinvoke <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: boolean isHandlerActive(io.netty.channel.ChannelHandlerContext)>(v);
if v == 0 goto label;
interfaceinvoke v.<io.netty.channel.ChannelConfig: io.netty.channel.ChannelConfig setAutoRead(boolean)>(0);
v = <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.AttributeKey READ_SUSPENDED>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.util.Attribute attr(io.netty.util.AttributeKey)>(v);
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(1);
interfaceinvoke v.<io.netty.util.Attribute: void set(java.lang.Object)>(v);
v = <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.AttributeKey REOPEN_TASK>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.util.Attribute attr(io.netty.util.AttributeKey)>(v);
v = interfaceinvoke v.<io.netty.util.Attribute: java.lang.Object get()>();
if v != null goto label;
v = new io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask;
specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask: void <init>(io.netty.channel.ChannelHandlerContext)>(v);
v = v;
interfaceinvoke v.<io.netty.util.Attribute: void set(java.lang.Object)>(v);
label:
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.util.concurrent.EventExecutor executor()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: io.netty.util.concurrent.ScheduledFuture schedule(java.lang.Runnable,long,java.util.concurrent.TimeUnit)>(v, v, v);
v = <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: boolean isAutoRead()>();
v = staticinvoke <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: boolean isHandlerActive(io.netty.channel.ChannelHandlerContext)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (boolean,boolean,long)>(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[])>("Suspend final status => \u0001:\u will reopened at: \u0001");
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String)>(v);
label:
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void informReadOperation(io.netty.channel.ChannelHandlerContext,long)>(v, v);
interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.ChannelHandlerContext fireChannelRead(java.lang.Object)>(v);
return;
}
protected long checkWaitReadTime(io.netty.channel.ChannelHandlerContext, long, long)
{
long v, v, v, v, v, v, v;
java.lang.Integer v;
java.util.concurrent.ConcurrentMap v;
io.netty.channel.ChannelHandlerContext v;
byte v, v;
int v;
io.netty.channel.Channel v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.lang.Object v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
v := @parameter: long;
v := @parameter: long;
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
v = v cmp v;
if v <= 0 goto label;
v = v + v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long lastReadTimestamp>;
v = v - v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
v = v cmp v;
if v <= 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
label:
return v;
}
protected void informReadOperation(io.netty.channel.ChannelHandlerContext, long)
{
long v;
java.lang.Integer v;
java.util.concurrent.ConcurrentMap v;
io.netty.channel.Channel v;
io.netty.channel.ChannelHandlerContext v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
int v;
java.lang.Object v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
v := @parameter: long;
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long lastReadTimestamp> = v;
label:
return;
}
protected long maximumCumulativeWrittenBytes()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v;
long v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
return v;
}
protected long maximumCumulativeReadBytes()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v;
long v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeReadBytes>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
return v;
}
public java.util.Collection channelTrafficCounters()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$1 v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v = new io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$1;
specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$1: void <init>(io.netty.handler.traffic.GlobalChannelTrafficShapingHandler)>(v);
return v;
}
public void write(io.netty.channel.ChannelHandlerContext, java.lang.Object, io.netty.channel.ChannelPromise) throws java.lang.Exception
{
io.netty.handler.traffic.TrafficCounter v, v, v;
java.lang.Integer v;
byte v, v, v, v, v;
io.netty.channel.ChannelPromise v;
boolean v, v, v, v;
io.netty.util.internal.logging.InternalLogger v, v;
long v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.channel.ChannelHandlerContext v;
int v;
java.lang.String v;
io.netty.channel.Channel v, v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v;
io.netty.channel.ChannelConfig v;
java.lang.Object v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
v := @parameter: java.lang.Object;
v := @parameter: io.netty.channel.ChannelPromise;
v = virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long calculateSize(java.lang.Object)>(v);
v = staticinvoke <io.netty.handler.traffic.TrafficCounter: long milliSecondFromNano()>();
v = v cmp 0L;
if v <= 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.TrafficCounter trafficCounter>;
v = virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long getWriteLimit()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
v = virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: long writeTimeToWait(long,long,long,long)>(v, v, v, v);
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
v = 0L;
if v == null goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long writeChannelLimit>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
v = virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: long writeTimeToWait(long,long,long,long)>(v, v, v, v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: boolean writeDeviationActive>;
if v == 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
v = virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: long cumulativeWrittenBytes()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp 0L;
if v > 0 goto label;
v = 0L;
label:
v = v cmp v;
if v >= 0 goto label;
v = v;
label:
v = specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long computeBalancedWait(float,float,long)>(v, v, v);
label:
v = v cmp v;
if v >= 0 goto label;
v = v;
label:
v = v cmp 10L;
if v < 0 goto label;
v = <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.ChannelConfig config()>();
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: boolean isAutoRead()>();
v = staticinvoke <io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: boolean isHandlerActive(io.netty.channel.ChannelHandlerContext)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long,boolean,boolean)>(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[])>("Write suspend: \u0001:\u0001:\u0001");
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String)>(v);
label:
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void submitWrite(io.netty.channel.ChannelHandlerContext,java.lang.Object,long,long,long,io.netty.channel.ChannelPromise)>(v, v, v, v, v, v);
return;
label:
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void submitWrite(io.netty.channel.ChannelHandlerContext,java.lang.Object,long,long,long,io.netty.channel.ChannelPromise)>(v, v, v, 0L, v, v);
return;
}
protected void submitWrite(io.netty.channel.ChannelHandlerContext, java.lang.Object, long, long, long, io.netty.channel.ChannelPromise)
{
io.netty.handler.traffic.TrafficCounter v, v;
java.lang.Integer v;
byte v, v, v, v;
io.netty.channel.ChannelPromise v;
boolean v, v;
io.netty.util.concurrent.EventExecutor v;
java.lang.Throwable v;
long v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.ConcurrentMap v;
io.netty.channel.ChannelHandlerContext v;
int v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$2 v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend v;
io.netty.channel.Channel v;
java.util.concurrent.TimeUnit v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v, v;
java.lang.Object v, v;
java.util.ArrayDeque v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
v := @parameter: java.lang.Object;
v := @parameter: long;
v := @parameter: long;
v := @parameter: long;
v := @parameter: io.netty.channel.ChannelPromise;
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.Channel channel()>();
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.ConcurrentMap channelQueues>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel getOrSetPerChannel(io.netty.channel.ChannelHandlerContext)>(v);
label:
v = v;
v = 0;
v = v;
entermonitor v;
label:
v = v cmp 0L;
if v != 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
v = virtualinvoke v.<java.util.ArrayDeque: boolean isEmpty()>();
if v == 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.TrafficCounter trafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void bytesRealWriteFlowControl(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void bytesRealWriteFlowControl(long)>(v);
interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.ChannelFuture write(java.lang.Object,io.netty.channel.ChannelPromise)>(v, v);
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long lastWriteTimestamp> = v;
exitmonitor v;
label:
return;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
v = v cmp v;
if v <= 0 goto label;
v = v + v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long lastWriteTimestamp>;
v = v - v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
v = v cmp v;
if v <= 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxTime>;
label:
v = new io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend;
v = v + v;
specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: void <init>(long,java.lang.Object,long,io.netty.channel.ChannelPromise)>(v, v, v, v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
virtualinvoke v.<java.util.ArrayDeque: void addLast(java.lang.Object)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize>;
v = v + v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize> = v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long addAndGet(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize>;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void checkWriteSuspend(io.netty.channel.ChannelHandlerContext,long,long)>(v, v, v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long maxGlobalWriteSize>;
v = v cmp v;
if v <= 0 goto label;
v = 1;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
if v == 0 goto label;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void setUserDefinedWritability(io.netty.channel.ChannelHandlerContext,boolean)>(v, 0);
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: long relativeTimeAction>;
v = interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.util.concurrent.EventExecutor executor()>();
v = new io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$2;
specialinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$2: void <init>(io.netty.handler.traffic.GlobalChannelTrafficShapingHandler,io.netty.channel.ChannelHandlerContext,io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel,long)>(v, v, v, v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
interfaceinvoke v.<io.netty.util.concurrent.EventExecutor: io.netty.util.concurrent.ScheduledFuture schedule(java.lang.Runnable,long,java.util.concurrent.TimeUnit)>(v, v, v);
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void sendAllValid(io.netty.channel.ChannelHandlerContext, io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel, long)
{
io.netty.handler.traffic.TrafficCounter v, v;
java.lang.Throwable v;
long v, v, v, v, v, v;
io.netty.channel.ChannelHandlerContext v;
byte v;
io.netty.channel.ChannelPromise v;
boolean v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel v;
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.util.concurrent.atomic.AtomicLong v;
java.lang.Object v, v;
java.util.ArrayDeque v, v, v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
v := @parameter: io.netty.channel.ChannelHandlerContext;
v := @parameter: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel;
v := @parameter: long;
entermonitor v;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
v = virtualinvoke v.<java.util.ArrayDeque: java.lang.Object pollFirst()>();
label:
if v == null goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: long relativeTimeAction>;
v = v cmp v;
if v > 0 goto label;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: long size>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.handler.traffic.TrafficCounter trafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void bytesRealWriteFlowControl(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: io.netty.handler.traffic.TrafficCounter channelTrafficCounter>;
virtualinvoke v.<io.netty.handler.traffic.TrafficCounter: void bytesRealWriteFlowControl(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize>;
v = v - v;
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long queueSize> = v;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: java.util.concurrent.atomic.AtomicLong queuesSize>;
v = neg v;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long addAndGet(long)>(v);
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: java.lang.Object toSend>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend: io.netty.channel.ChannelPromise promise>;
interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.ChannelFuture write(java.lang.Object,io.netty.channel.ChannelPromise)>(v, v);
v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: long lastWriteTimestamp> = v;
goto label;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
virtualinvoke v.<java.util.ArrayDeque: void addFirst(java.lang.Object)>(v);
goto label;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
virtualinvoke v.<java.util.ArrayDeque: java.lang.Object pollFirst()>();
goto label;
label:
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel: java.util.ArrayDeque messagesQueue>;
v = virtualinvoke v.<java.util.ArrayDeque: boolean isEmpty()>();
if v == 0 goto label;
virtualinvoke v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: void releaseWriteSuspended(io.netty.channel.ChannelHandlerContext)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
interfaceinvoke v.<io.netty.channel.ChannelHandlerContext: io.netty.channel.ChannelHandlerContext flush()>();
return;
catch java.lang.Throwable from label to label with label;
}
public java.lang.String toString()
{
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler v;
java.lang.StringBuilder v;
long v, v;
java.lang.String v, v;
v := @this: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(340);
v = specialinvoke v.<io.netty.handler.traffic.AbstractTrafficShapingHandler: java.lang.String toString()>();
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long writeChannelLimit>;
v = v.<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: long readChannelLimit>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,long,long)>(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[])>("\u Write Channel Limit: \u Read Channel Limit: \u0001");
return v;
}
static void <clinit>()
{
io.netty.util.internal.logging.InternalLogger v;
v = staticinvoke <io.netty.util.internal.logging.InternalLoggerFactory: io.netty.util.internal.logging.InternalLogger getInstance(java.lang.Class)>(class "Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;");
<io.netty.handler.traffic.GlobalChannelTrafficShapingHandler: io.netty.util.internal.logging.InternalLogger logger> = v;
return;
}
}