public class io.netty.handler.traffic.GlobalChannelTrafficShapingHandler extends io.netty.handler.traffic.AbstractTrafficShapingHandler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler
super_class: io.netty.handler.traffic.AbstractTrafficShapingHandler
{
private static final io.netty.util.internal.logging.InternalLogger logger;
descriptor: Lio/netty/util/internal/logging/InternalLogger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
final java.util.concurrent.ConcurrentMap<java.lang.Integer, io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel> channelQueues;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/Integer;Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;>;
private final java.util.concurrent.atomic.AtomicLong queuesSize;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.atomic.AtomicLong cumulativeWrittenBytes;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.atomic.AtomicLong cumulativeReadBytes;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
volatile long maxGlobalWriteSize;
descriptor: J
flags: (0x0040) ACC_VOLATILE
private volatile long writeChannelLimit;
descriptor: J
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile long readChannelLimit;
descriptor: J
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private static final float DEFAULT_DEVIATION;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0.1
private static final float MAX_DEVIATION;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0.4
private static final float DEFAULT_SLOWDOWN;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0.4
private static final float DEFAULT_ACCELERATION;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -0.1
private volatile float maxDeviation;
descriptor: F
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile float accelerationFactor;
descriptor: F
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile float slowDownFactor;
descriptor: F
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile boolean readDeviationActive;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile boolean writeDeviationActive;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
1: putstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
2: return
LocalVariableTable:
Start End Slot Name Signature
void createGlobalTrafficCounter(java.util.concurrent.ScheduledExecutorService);
descriptor: (Ljava/util/concurrent/ScheduledExecutorService;)V
flags: (0x0000)
Code:
stack=7, locals=3, args_size=2
start local 0 start local 1 0: aload 0
ldc 0.1
ldc 0.4
ldc -0.1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.setMaxDeviation:(FFF)V
1: aload 1
ifnonnull 3
2: new java.lang.IllegalArgumentException
dup
ldc "Executor must not be null"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
new io.netty.handler.traffic.GlobalChannelTrafficCounter
dup
aload 0
aload 1
ldc "GlobalChannelTC"
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.checkInterval:J
invokespecial io.netty.handler.traffic.GlobalChannelTrafficCounter.<init>:(Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/String;J)V
astore 2
start local 2 4: aload 0
aload 2
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.setTrafficCounter:(Lio/netty/handler/traffic/TrafficCounter;)V
5: aload 2
invokevirtual io.netty.handler.traffic.TrafficCounter.start:()V
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 7 1 executor Ljava/util/concurrent/ScheduledExecutorService;
4 7 2 tc Lio/netty/handler/traffic/TrafficCounter;
MethodParameters:
Name Flags
executor
protected int userDefinedWritabilityIndex();
descriptor: ()I
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_3
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public void <init>(java.util.concurrent.ScheduledExecutorService, long, long, long, long, long, long);
descriptor: (Ljava/util/concurrent/ScheduledExecutorService;JJJJJJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=14, args_size=8
start local 0 start local 1 start local 2 start local 4 start local 6 start local 8 start local 10 start local 12 0: aload 0
lload 2
lload 4
lload 10
lload 12
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJJJ)V
1: aload 0
invokestatic io.netty.util.internal.PlatformDependent.newConcurrentHashMap:()Ljava/util/concurrent/ConcurrentMap;
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
2: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
3: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeWrittenBytes:Ljava/util/concurrent/atomic/AtomicLong;
4: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeReadBytes:Ljava/util/concurrent/atomic/AtomicLong;
5: aload 0
ldc 419430400
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxGlobalWriteSize:J
6: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.createGlobalTrafficCounter:(Ljava/util/concurrent/ScheduledExecutorService;)V
7: aload 0
lload 6
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeChannelLimit:J
8: aload 0
lload 8
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readChannelLimit:J
9: return
end local 12 end local 10 end local 8 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 10 1 executor Ljava/util/concurrent/ScheduledExecutorService;
0 10 2 writeGlobalLimit J
0 10 4 readGlobalLimit J
0 10 6 writeChannelLimit J
0 10 8 readChannelLimit J
0 10 10 checkInterval J
0 10 12 maxTime J
MethodParameters:
Name Flags
executor
writeGlobalLimit
readGlobalLimit
writeChannelLimit
readChannelLimit
checkInterval
maxTime
public void <init>(java.util.concurrent.ScheduledExecutorService, long, long, long, long, long);
descriptor: (Ljava/util/concurrent/ScheduledExecutorService;JJJJJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=12, args_size=7
start local 0 start local 1 start local 2 start local 4 start local 6 start local 8 start local 10 0: aload 0
lload 2
lload 4
lload 10
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJJ)V
1: aload 0
invokestatic io.netty.util.internal.PlatformDependent.newConcurrentHashMap:()Ljava/util/concurrent/ConcurrentMap;
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
2: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
3: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeWrittenBytes:Ljava/util/concurrent/atomic/AtomicLong;
4: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeReadBytes:Ljava/util/concurrent/atomic/AtomicLong;
5: aload 0
ldc 419430400
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxGlobalWriteSize:J
6: aload 0
lload 6
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeChannelLimit:J
7: aload 0
lload 8
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readChannelLimit:J
8: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.createGlobalTrafficCounter:(Ljava/util/concurrent/ScheduledExecutorService;)V
9: return
end local 10 end local 8 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 10 1 executor Ljava/util/concurrent/ScheduledExecutorService;
0 10 2 writeGlobalLimit J
0 10 4 readGlobalLimit J
0 10 6 writeChannelLimit J
0 10 8 readChannelLimit J
0 10 10 checkInterval J
MethodParameters:
Name Flags
executor
writeGlobalLimit
readGlobalLimit
writeChannelLimit
readChannelLimit
checkInterval
public void <init>(java.util.concurrent.ScheduledExecutorService, long, long, long, long);
descriptor: (Ljava/util/concurrent/ScheduledExecutorService;JJJJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 6 start local 8 0: aload 0
lload 2
lload 4
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJ)V
1: aload 0
invokestatic io.netty.util.internal.PlatformDependent.newConcurrentHashMap:()Ljava/util/concurrent/ConcurrentMap;
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
2: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
3: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeWrittenBytes:Ljava/util/concurrent/atomic/AtomicLong;
4: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeReadBytes:Ljava/util/concurrent/atomic/AtomicLong;
5: aload 0
ldc 419430400
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxGlobalWriteSize:J
6: aload 0
lload 6
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeChannelLimit:J
7: aload 0
lload 8
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readChannelLimit:J
8: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.createGlobalTrafficCounter:(Ljava/util/concurrent/ScheduledExecutorService;)V
9: return
end local 8 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 10 1 executor Ljava/util/concurrent/ScheduledExecutorService;
0 10 2 writeGlobalLimit J
0 10 4 readGlobalLimit J
0 10 6 writeChannelLimit J
0 10 8 readChannelLimit J
MethodParameters:
Name Flags
executor
writeGlobalLimit
readGlobalLimit
writeChannelLimit
readChannelLimit
public void <init>(java.util.concurrent.ScheduledExecutorService, long);
descriptor: (Ljava/util/concurrent/ScheduledExecutorService;J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
lload 2
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(J)V
1: aload 0
invokestatic io.netty.util.internal.PlatformDependent.newConcurrentHashMap:()Ljava/util/concurrent/ConcurrentMap;
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
2: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
3: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeWrittenBytes:Ljava/util/concurrent/atomic/AtomicLong;
4: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeReadBytes:Ljava/util/concurrent/atomic/AtomicLong;
5: aload 0
ldc 419430400
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxGlobalWriteSize:J
6: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.createGlobalTrafficCounter:(Ljava/util/concurrent/ScheduledExecutorService;)V
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 8 1 executor Ljava/util/concurrent/ScheduledExecutorService;
0 8 2 checkInterval J
MethodParameters:
Name Flags
executor
checkInterval
public void <init>(java.util.concurrent.ScheduledExecutorService);
descriptor: (Ljava/util/concurrent/ScheduledExecutorService;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:()V
1: aload 0
invokestatic io.netty.util.internal.PlatformDependent.newConcurrentHashMap:()Ljava/util/concurrent/ConcurrentMap;
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
2: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
3: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeWrittenBytes:Ljava/util/concurrent/atomic/AtomicLong;
4: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeReadBytes:Ljava/util/concurrent/atomic/AtomicLong;
5: aload 0
ldc 419430400
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxGlobalWriteSize:J
6: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.createGlobalTrafficCounter:(Ljava/util/concurrent/ScheduledExecutorService;)V
7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 8 1 executor Ljava/util/concurrent/ScheduledExecutorService;
MethodParameters:
Name Flags
executor
public float maxDeviation();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxDeviation:F
freturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public float accelerationFactor();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.accelerationFactor:F
freturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public float slowDownFactor();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.slowDownFactor:F
freturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public void setMaxDeviation(float, float, float);
descriptor: (FFF)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: fload 1
ldc 0.4
fcmpl
ifle 2
1: new java.lang.IllegalArgumentException
dup
ldc "maxDeviation must be <= 0.4"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
fload 2
fconst_0
fcmpg
ifge 4
3: new java.lang.IllegalArgumentException
dup
ldc "slowDownFactor must be >= 0"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
fload 3
fconst_0
fcmpl
ifle 6
5: new java.lang.IllegalArgumentException
dup
ldc "accelerationFactor must be <= 0"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
fload 1
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxDeviation:F
7: aload 0
fconst_1
fload 3
fadd
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.accelerationFactor:F
8: aload 0
fconst_1
fload 2
fadd
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.slowDownFactor:F
9: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 10 1 maxDeviation F
0 10 2 slowDownFactor F
0 10 3 accelerationFactor F
MethodParameters:
Name Flags
maxDeviation
slowDownFactor
accelerationFactor
private void computeDeviationCumulativeBytes();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=13, args_size=1
start local 0 0: lconst_0
lstore 1
start local 1 1: lconst_0
lstore 3
start local 3 2: ldc 9223372036854775807
lstore 5
start local 5 3: ldc 9223372036854775807
lstore 7
start local 7 4: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 10
goto 16
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long long long top java.util.Iterator
StackMap stack:
5: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 9
start local 9 6: aload 9
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
invokevirtual io.netty.handler.traffic.TrafficCounter.cumulativeWrittenBytes:()J
lstore 11
start local 11 7: lload 1
lload 11
lcmp
ifge 9
8: lload 11
lstore 1
9: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long long long io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel java.util.Iterator long
StackMap stack:
lload 5
lload 11
lcmp
ifle 11
10: lload 11
lstore 5
11: StackMap locals:
StackMap stack:
aload 9
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
invokevirtual io.netty.handler.traffic.TrafficCounter.cumulativeReadBytes:()J
lstore 11
12: lload 3
lload 11
lcmp
ifge 14
13: lload 11
lstore 3
14: StackMap locals:
StackMap stack:
lload 7
lload 11
lcmp
ifle 16
15: lload 11
lstore 7
end local 11 end local 9 16: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long long long top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
17: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.size:()I
iconst_1
if_icmple 18
iconst_1
goto 19
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long long long
StackMap stack:
18: iconst_0
StackMap locals:
StackMap stack: int
19: istore 9
start local 9 20: aload 0
iload 9
ifeq 21
lload 7
lload 3
ldc 2
ldiv
lcmp
ifge 21
iconst_1
goto 22
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long long long int
StackMap stack: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler
21: iconst_0
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long long long int
StackMap stack: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler int
22: putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readDeviationActive:Z
23: aload 0
iload 9
ifeq 24
lload 5
lload 1
ldc 2
ldiv
lcmp
ifge 24
iconst_1
goto 25
StackMap locals:
StackMap stack: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler
24: iconst_0
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long long long int
StackMap stack: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler int
25: putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeDeviationActive:Z
26: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeWrittenBytes:Ljava/util/concurrent/atomic/AtomicLong;
lload 1
invokevirtual java.util.concurrent.atomic.AtomicLong.set:(J)V
27: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeReadBytes:Ljava/util/concurrent/atomic/AtomicLong;
lload 3
invokevirtual java.util.concurrent.atomic.AtomicLong.set:(J)V
28: return
end local 9 end local 7 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
1 29 1 maxWrittenBytes J
2 29 3 maxReadBytes J
3 29 5 minWrittenBytes J
4 29 7 minReadBytes J
6 16 9 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
7 16 11 value J
20 29 9 multiple Z
protected void doAccounting(io.netty.handler.traffic.TrafficCounter);
descriptor: (Lio/netty/handler/traffic/TrafficCounter;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.computeDeviationCumulativeBytes:()V
1: aload 0
aload 1
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.doAccounting:(Lio/netty/handler/traffic/TrafficCounter;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 3 1 counter Lio/netty/handler/traffic/TrafficCounter;
MethodParameters:
Name Flags
counter
private long computeBalancedWait(float, float, long);
descriptor: (FFJ)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: fload 2
fconst_0
fcmpl
ifne 2
1: lload 3
lreturn
2: StackMap locals:
StackMap stack:
fload 1
fload 2
fdiv
fstore 5
start local 5 3: fload 5
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxDeviation:F
fcmpl
ifle 10
4: fload 5
fconst_1
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxDeviation:F
fsub
fcmpg
ifge 6
5: lload 3
lreturn
6: StackMap locals: float
StackMap stack:
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.slowDownFactor:F
fstore 5
7: lload 3
ldc 10
lcmp
ifge 11
8: ldc 10
lstore 3
9: goto 11
10: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.accelerationFactor:F
fstore 5
11: StackMap locals:
StackMap stack:
lload 3
l2f
fload 5
fmul
f2l
lreturn
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 12 1 maxLocal F
0 12 2 maxGlobal F
0 12 3 wait J
3 12 5 ratio F
MethodParameters:
Name Flags
maxLocal
maxGlobal
wait
public long getMaxGlobalWriteSize();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxGlobalWriteSize:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public void setMaxGlobalWriteSize(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: lload 1
lconst_0
lcmp
ifgt 2
1: new java.lang.IllegalArgumentException
dup
ldc "maxGlobalWriteSize must be positive"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
lload 1
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxGlobalWriteSize:J
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 4 1 maxGlobalWriteSize J
MethodParameters:
Name Flags
maxGlobalWriteSize
public long queuesSize();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public void configureChannel(long, long);
descriptor: (JJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=9, args_size=3
start local 0 start local 1 start local 3 0: aload 0
lload 1
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeChannelLimit:J
1: aload 0
lload 3
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readChannelLimit:J
2: invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
lstore 5
start local 5 3: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 8
goto 6
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long long top java.util.Iterator
StackMap stack:
4: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 7
start local 7 5: aload 7
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 5
invokevirtual io.netty.handler.traffic.TrafficCounter.resetAccounting:(J)V
end local 7 6: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
7: return
end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 8 1 newWriteLimit J
0 8 3 newReadLimit J
3 8 5 now J
5 6 7 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
MethodParameters:
Name Flags
newWriteLimit
newReadLimit
public long getWriteChannelLimit();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeChannelLimit:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public void setWriteChannelLimit(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 0
lload 1
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeChannelLimit:J
1: invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
lstore 3
start local 3 2: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 5
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long top java.util.Iterator
StackMap stack:
3: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 5
start local 5 4: aload 5
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 3
invokevirtual io.netty.handler.traffic.TrafficCounter.resetAccounting:(J)V
end local 5 5: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
6: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 7 1 writeLimit J
2 7 3 now J
4 5 5 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
MethodParameters:
Name Flags
writeLimit
public long getReadChannelLimit();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readChannelLimit:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public void setReadChannelLimit(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 0
lload 1
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readChannelLimit:J
1: invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
lstore 3
start local 3 2: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 5
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler long long top java.util.Iterator
StackMap stack:
3: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 5
start local 5 4: aload 5
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 3
invokevirtual io.netty.handler.traffic.TrafficCounter.resetAccounting:(J)V
end local 5 5: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
6: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 7 1 readLimit J
2 7 3 now J
4 5 5 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
MethodParameters:
Name Flags
readLimit
public final void release();
descriptor: ()V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
invokevirtual io.netty.handler.traffic.TrafficCounter.stop:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
private io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel getOrSetPerChannel(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
astore 2
start local 2 1: aload 2
invokevirtual java.lang.Object.hashCode:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 3
start local 3 2: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 4
start local 4 3: aload 4
ifnonnull 13
4: new io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
dup
invokespecial io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.<init>:()V
astore 4
5: aload 4
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
6: aload 4
new io.netty.handler.traffic.TrafficCounter
dup
aload 0
aconst_null
new java.lang.StringBuilder
dup
ldc "ChannelTC"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
7: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokevirtual java.lang.Object.hashCode:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.checkInterval:J
invokespecial io.netty.handler.traffic.TrafficCounter.<init>:(Lio/netty/handler/traffic/AbstractTrafficShapingHandler;Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/String;J)V
8: putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
9: aload 4
lconst_0
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
10: aload 4
invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.lastReadTimestamp:J
11: aload 4
aload 4
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.lastReadTimestamp:J
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.lastWriteTimestamp:J
12: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
aload 3
aload 4
invokeinterface java.util.concurrent.ConcurrentMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
13: StackMap locals: io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 14 1 ctx Lio/netty/channel/ChannelHandlerContext;
1 14 2 channel Lio/netty/channel/Channel;
2 14 3 key Ljava/lang/Integer;
3 14 4 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
MethodParameters:
Name Flags
ctx
public void handlerAdded(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.getOrSetPerChannel:(Lio/netty/channel/ChannelHandlerContext;)Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
pop
1: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
invokevirtual io.netty.handler.traffic.TrafficCounter.resetCumulativeTime:()V
2: aload 0
aload 1
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.handlerAdded:(Lio/netty/channel/ChannelHandlerContext;)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 4 1 ctx Lio/netty/channel/ChannelHandlerContext;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
public void handlerRemoved(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=2
start local 0 start local 1 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
invokevirtual io.netty.handler.traffic.TrafficCounter.resetCumulativeTime:()V
1: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
astore 2
start local 2 2: aload 2
invokevirtual java.lang.Object.hashCode:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 3
start local 3 3: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
aload 3
invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 4
start local 4 4: aload 4
ifnull 28
5: aload 4
dup
astore 5
monitorenter
6: aload 2
invokeinterface io.netty.channel.Channel.isActive:()Z
ifeq 17
7: aload 4
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.iterator:()Ljava/util/Iterator;
astore 7
goto 15
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel top java.util.Iterator
StackMap stack:
8: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend
astore 6
start local 6 9: aload 0
aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.calculateSize:(Ljava/lang/Object;)J
lstore 8
start local 8 10: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 8
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
11: aload 4
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 8
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
12: aload 4
dup
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
lload 8
lsub
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
13: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
lload 8
lneg
invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
pop2
14: aload 1
aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.promise:Lio/netty/channel/ChannelPromise;
invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
pop
end local 8 end local 6 15: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
16: goto 23
17: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack:
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
aload 4
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
lneg
invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
pop2
18: aload 4
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.iterator:()Ljava/util/Iterator;
astore 7
goto 22
StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel top java.util.Iterator
StackMap stack:
19: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend
astore 6
start local 6 20: aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
instanceof io.netty.buffer.ByteBuf
ifeq 22
21: aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
checkcast io.netty.buffer.ByteBuf
invokevirtual io.netty.buffer.ByteBuf.release:()Z
pop
end local 6 22: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 19
23: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack:
aload 4
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.clear:()V
24: aload 5
monitorexit
25: goto 28
StackMap locals:
StackMap stack: java.lang.Throwable
26: aload 5
monitorexit
27: athrow
28: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.releaseWriteSuspended:(Lio/netty/channel/ChannelHandlerContext;)V
29: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.releaseReadSuspended:(Lio/netty/channel/ChannelHandlerContext;)V
30: aload 0
aload 1
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.handlerRemoved:(Lio/netty/channel/ChannelHandlerContext;)V
31: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 32 1 ctx Lio/netty/channel/ChannelHandlerContext;
2 32 2 channel Lio/netty/channel/Channel;
3 32 3 key Ljava/lang/Integer;
4 32 4 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
9 15 6 toSend Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$ToSend;
10 15 8 size J
20 22 6 toSend Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$ToSend;
Exception table:
from to target type
6 25 26 any
26 27 26 any
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
public void channelRead(io.netty.channel.ChannelHandlerContext, java.lang.Object);
descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=17, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 2
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.calculateSize:(Ljava/lang/Object;)J
lstore 3
start local 3 1: invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
lstore 5
start local 5 2: lload 3
lconst_0
lcmp
ifle 40
3: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 3
aload 0
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.getReadLimit:()J
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lload 5
invokevirtual io.netty.handler.traffic.TrafficCounter.readTimeToWait:(JJJJ)J
lstore 7
start local 7 4: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokevirtual java.lang.Object.hashCode:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 9
start local 9 5: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
aload 9
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 10
start local 10 6: lconst_0
lstore 11
start local 11 7: aload 10
ifnull 17
8: aload 10
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 3
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readChannelLimit:J
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lload 5
invokevirtual io.netty.handler.traffic.TrafficCounter.readTimeToWait:(JJJJ)J
lstore 11
9: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readDeviationActive:Z
ifeq 17
10: aload 10
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
invokevirtual io.netty.handler.traffic.TrafficCounter.cumulativeReadBytes:()J
lstore 13
start local 13 11: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeReadBytes:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 15
start local 15 12: lload 13
lconst_0
lcmp
ifgt 14
13: lconst_0
lstore 13
14: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long long java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel long long long
StackMap stack:
lload 15
lload 13
lcmp
ifge 16
15: lload 13
lstore 15
16: StackMap locals:
StackMap stack:
aload 0
lload 13
l2f
lload 15
l2f
lload 11
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.computeBalancedWait:(FFJ)J
lstore 11
end local 15 end local 13 17: StackMap locals:
StackMap stack:
lload 11
lload 7
lcmp
ifge 19
18: lload 7
lstore 11
19: StackMap locals:
StackMap stack:
aload 0
aload 1
lload 11
lload 5
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.checkWaitReadTime:(Lio/netty/channel/ChannelHandlerContext;JJ)J
lstore 11
20: lload 11
ldc 10
lcmp
iflt 40
21: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
astore 13
start local 13 22: aload 13
invokeinterface io.netty.channel.Channel.config:()Lio/netty/channel/ChannelConfig;
astore 14
start local 14 23: getstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
ifeq 27
24: getstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
new java.lang.StringBuilder
dup
ldc "Read Suspend: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 11
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
bipush 58
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 14
invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
bipush 58
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
25: aload 1
invokestatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
26: invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
27: StackMap locals: io.netty.channel.Channel io.netty.channel.ChannelConfig
StackMap stack:
aload 14
invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
ifeq 40
aload 1
invokestatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
ifeq 40
28: aload 14
iconst_0
invokeinterface io.netty.channel.ChannelConfig.setAutoRead:(Z)Lio/netty/channel/ChannelConfig;
pop
29: aload 13
getstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.READ_SUSPENDED:Lio/netty/util/AttributeKey;
invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokeinterface io.netty.util.Attribute.set:(Ljava/lang/Object;)V
30: aload 13
getstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.REOPEN_TASK:Lio/netty/util/AttributeKey;
invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
astore 15
start local 15 31: aload 15
invokeinterface io.netty.util.Attribute.get:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 16
start local 16 32: aload 16
ifnonnull 35
33: new io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask
dup
aload 1
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask.<init>:(Lio/netty/channel/ChannelHandlerContext;)V
astore 16
34: aload 15
aload 16
invokeinterface io.netty.util.Attribute.set:(Ljava/lang/Object;)V
35: StackMap locals: io.netty.util.Attribute java.lang.Runnable
StackMap stack:
aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
aload 16
lload 11
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface io.netty.util.concurrent.EventExecutor.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/netty/util/concurrent/ScheduledFuture;
pop
36: getstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
ifeq 40
37: getstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
new java.lang.StringBuilder
dup
ldc "Suspend final status => "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 14
invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
bipush 58
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
38: aload 1
invokestatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
ldc " will reopened at: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 11
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
39: invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
end local 16 end local 15 end local 14 end local 13 end local 11 end local 10 end local 9 end local 7 40: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long
StackMap stack:
aload 0
aload 1
lload 5
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.informReadOperation:(Lio/netty/channel/ChannelHandlerContext;J)V
41: aload 1
aload 2
invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
pop
42: return
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 43 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 43 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 43 2 msg Ljava/lang/Object;
1 43 3 size J
2 43 5 now J
4 40 7 waitGlobal J
5 40 9 key Ljava/lang/Integer;
6 40 10 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
7 40 11 wait J
11 17 13 maxLocalRead J
12 17 15 maxGlobalRead J
22 40 13 channel Lio/netty/channel/Channel;
23 40 14 config Lio/netty/channel/ChannelConfig;
31 40 15 attr Lio/netty/util/Attribute<Ljava/lang/Runnable;>;
32 40 16 reopenTask Ljava/lang/Runnable;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx final
msg final
protected long checkWaitReadTime(io.netty.channel.ChannelHandlerContext, long, long);
descriptor: (Lio/netty/channel/ChannelHandlerContext;JJ)J
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokevirtual java.lang.Object.hashCode:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 6
start local 6 1: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
aload 6
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 7
start local 7 2: aload 7
ifnull 5
3: lload 2
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lcmp
ifle 5
lload 4
lload 2
ladd
aload 7
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.lastReadTimestamp:J
lsub
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lcmp
ifle 5
4: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lstore 2
5: StackMap locals: java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack:
lload 2
lreturn
end local 7 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 6 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 6 2 wait J
0 6 4 now J
1 6 6 key Ljava/lang/Integer;
2 6 7 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
MethodParameters:
Name Flags
ctx final
wait
now final
protected void informReadOperation(io.netty.channel.ChannelHandlerContext, long);
descriptor: (Lio/netty/channel/ChannelHandlerContext;J)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokevirtual java.lang.Object.hashCode:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 4
start local 4 1: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
aload 4
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 5
start local 5 2: aload 5
ifnull 4
3: aload 5
lload 2
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.lastReadTimestamp:J
4: StackMap locals: java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack:
return
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 5 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 5 2 now J
1 5 4 key Ljava/lang/Integer;
2 5 5 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
MethodParameters:
Name Flags
ctx final
now final
protected long maximumCumulativeWrittenBytes();
descriptor: ()J
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeWrittenBytes:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
protected long maximumCumulativeReadBytes();
descriptor: ()J
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeReadBytes:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
public java.util.Collection<io.netty.handler.traffic.TrafficCounter> channelTrafficCounters();
descriptor: ()Ljava/util/Collection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$1
dup
aload 0
invokespecial io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$1.<init>:(Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
Signature: ()Ljava/util/Collection<Lio/netty/handler/traffic/TrafficCounter;>;
public void write(io.netty.channel.ChannelHandlerContext, java.lang.Object, io.netty.channel.ChannelPromise);
descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=18, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 2
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.calculateSize:(Ljava/lang/Object;)J
lstore 4
start local 4 1: invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
lstore 6
start local 6 2: lload 4
lconst_0
lcmp
ifle 26
3: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 4
aload 0
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.getWriteLimit:()J
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lload 6
invokevirtual io.netty.handler.traffic.TrafficCounter.writeTimeToWait:(JJJJ)J
lstore 8
start local 8 4: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokevirtual java.lang.Object.hashCode:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 10
start local 10 5: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
aload 10
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 11
start local 11 6: lconst_0
lstore 12
start local 12 7: aload 11
ifnull 17
8: aload 11
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 4
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeChannelLimit:J
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lload 6
invokevirtual io.netty.handler.traffic.TrafficCounter.writeTimeToWait:(JJJJ)J
lstore 12
9: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeDeviationActive:Z
ifeq 17
10: aload 11
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
invokevirtual io.netty.handler.traffic.TrafficCounter.cumulativeWrittenBytes:()J
lstore 14
start local 14 11: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.cumulativeWrittenBytes:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 16
start local 16 12: lload 14
lconst_0
lcmp
ifgt 14
13: lconst_0
lstore 14
14: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.channel.ChannelPromise long long long java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel long long long
StackMap stack:
lload 16
lload 14
lcmp
ifge 16
15: lload 14
lstore 16
16: StackMap locals:
StackMap stack:
aload 0
lload 14
l2f
lload 16
l2f
lload 12
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.computeBalancedWait:(FFJ)J
lstore 12
end local 16 end local 14 17: StackMap locals:
StackMap stack:
lload 12
lload 8
lcmp
ifge 19
18: lload 8
lstore 12
19: StackMap locals:
StackMap stack:
lload 12
ldc 10
lcmp
iflt 26
20: getstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
ifeq 24
21: getstatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
new java.lang.StringBuilder
dup
ldc "Write suspend: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 12
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
bipush 58
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokeinterface io.netty.channel.Channel.config:()Lio/netty/channel/ChannelConfig;
invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
bipush 58
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
22: aload 1
invokestatic io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
24: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
lload 4
lload 12
lload 6
aload 3
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.submitWrite:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;JJJLio/netty/channel/ChannelPromise;)V
25: return
end local 12 end local 11 end local 10 end local 8 26: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.channel.ChannelPromise long long
StackMap stack:
aload 0
aload 1
aload 2
lload 4
lconst_0
lload 6
aload 3
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.submitWrite:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;JJJLio/netty/channel/ChannelPromise;)V
27: return
end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 28 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 28 2 msg Ljava/lang/Object;
0 28 3 promise Lio/netty/channel/ChannelPromise;
1 28 4 size J
2 28 6 now J
4 26 8 waitGlobal J
5 26 10 key Ljava/lang/Integer;
6 26 11 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
7 26 12 wait J
11 17 14 maxLocalWrite J
12 17 16 maxGlobalWrite J
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx final
msg final
promise final
protected void submitWrite(io.netty.channel.ChannelHandlerContext, java.lang.Object, long, long, long, io.netty.channel.ChannelPromise);
descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;JJJLio/netty/channel/ChannelPromise;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=8, locals=20, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 5 start local 7 start local 9 0: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
astore 10
start local 10 1: aload 10
invokevirtual java.lang.Object.hashCode:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 11
start local 11 2: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.channelQueues:Ljava/util/concurrent/ConcurrentMap;
aload 11
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
astore 12
start local 12 3: aload 12
ifnonnull 5
4: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.getOrSetPerChannel:(Lio/netty/channel/ChannelHandlerContext;)Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
astore 12
5: StackMap locals: io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack:
lload 5
lstore 14
start local 14 6: iconst_0
istore 16
start local 16 7: aload 12
dup
astore 17
monitorenter
8: lload 5
lconst_0
lcmp
ifne 15
aload 12
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifeq 15
9: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 3
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
10: aload 12
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 3
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
11: aload 1
aload 2
aload 9
invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
pop
12: aload 12
lload 7
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.lastWriteTimestamp:J
13: aload 17
monitorexit
14: return
15: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long long io.netty.channel.ChannelPromise io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel top long int io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack:
lload 14
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lcmp
ifle 17
lload 7
lload 14
ladd
aload 12
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.lastWriteTimestamp:J
lsub
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lcmp
ifle 17
16: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxTime:J
lstore 14
17: StackMap locals:
StackMap stack:
new io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend
dup
lload 14
lload 7
ladd
aload 2
lload 3
aload 9
invokespecial io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.<init>:(JLjava/lang/Object;JLio/netty/channel/ChannelPromise;)V
astore 13
start local 13 18: aload 12
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
aload 13
invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
19: aload 12
dup
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
lload 3
ladd
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
20: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
lload 3
invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
pop2
21: aload 0
aload 1
lload 14
aload 12
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.checkWriteSuspend:(Lio/netty/channel/ChannelHandlerContext;JJ)V
22: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.maxGlobalWriteSize:J
lcmp
ifle 24
23: iconst_1
istore 16
24: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long long io.netty.channel.ChannelPromise io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend long int io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack:
aload 17
monitorexit
25: goto 28
end local 13 StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long long io.netty.channel.ChannelPromise io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel top long int io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel
StackMap stack: java.lang.Throwable
26: aload 17
monitorexit
27: athrow
start local 13 28: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long long io.netty.channel.ChannelPromise io.netty.channel.Channel java.lang.Integer io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend long int
StackMap stack:
iload 16
ifeq 30
29: aload 0
aload 1
iconst_0
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.setUserDefinedWritability:(Lio/netty/channel/ChannelHandlerContext;Z)V
30: StackMap locals:
StackMap stack:
aload 13
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.relativeTimeAction:J
lstore 17
start local 17 31: aload 12
astore 19
start local 19 32: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
new io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$2
dup
aload 0
aload 1
aload 19
lload 17
invokespecial io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$2.<init>:(Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;J)V
33: lload 14
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
34: invokeinterface io.netty.util.concurrent.EventExecutor.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/netty/util/concurrent/ScheduledFuture;
pop
35: return
end local 19 end local 17 end local 16 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 7 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 36 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 36 2 msg Ljava/lang/Object;
0 36 3 size J
0 36 5 writedelay J
0 36 7 now J
0 36 9 promise Lio/netty/channel/ChannelPromise;
1 36 10 channel Lio/netty/channel/Channel;
2 36 11 key Ljava/lang/Integer;
3 36 12 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
18 26 13 newToSend Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$ToSend;
28 36 13 newToSend Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$ToSend;
6 36 14 delay J
7 36 16 globalSizeExceeded Z
31 36 17 futureNow J
32 36 19 forSchedule Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
Exception table:
from to target type
8 14 26 any
15 25 26 any
26 27 26 any
MethodParameters:
Name Flags
ctx final
msg final
size final
writedelay final
now final
promise final
private void sendAllValid(io.netty.channel.ChannelHandlerContext, io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel, long);
descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
dup
astore 5
monitorenter
1: aload 2
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.pollFirst:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend
astore 6
start local 6 2: goto 15
3: StackMap locals: io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend
StackMap stack:
aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.relativeTimeAction:J
lload 3
lcmp
ifgt 12
4: aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.size:J
lstore 7
start local 7 5: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 7
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
6: aload 2
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.channelTrafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 7
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
7: aload 2
dup
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
lload 7
lsub
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.queueSize:J
8: aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.queuesSize:Ljava/util/concurrent/atomic/AtomicLong;
lload 7
lneg
invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
pop2
9: aload 1
aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
aload 6
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend.promise:Lio/netty/channel/ChannelPromise;
invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
pop
10: aload 2
lload 3
putfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.lastWriteTimestamp:J
end local 7 11: goto 14
12: StackMap locals:
StackMap stack:
aload 2
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
aload 6
invokevirtual java.util.ArrayDeque.addFirst:(Ljava/lang/Object;)V
13: goto 16
14: StackMap locals:
StackMap stack:
aload 2
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.pollFirst:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend
astore 6
StackMap locals:
StackMap stack:
15: aload 6
ifnonnull 3
16: StackMap locals:
StackMap stack:
aload 2
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifeq 18
17: aload 0
aload 1
invokevirtual io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.releaseWriteSuspended:(Lio/netty/channel/ChannelHandlerContext;)V
end local 6 18: StackMap locals:
StackMap stack:
aload 5
monitorexit
19: goto 22
StackMap locals:
StackMap stack: java.lang.Throwable
20: aload 5
monitorexit
21: athrow
22: StackMap locals:
StackMap stack:
aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
pop
23: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
0 24 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 24 2 perChannel Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$PerChannel;
0 24 3 now J
2 18 6 newToSend Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler$ToSend;
5 11 7 size J
Exception table:
from to target type
1 19 20 any
20 21 20 any
MethodParameters:
Name Flags
ctx final
perChannel final
now final
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
sipush 340
invokespecial java.lang.StringBuilder.<init>:(I)V
aload 0
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
1: ldc " Write Channel Limit: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.writeChannelLimit:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
2: ldc " Read Channel Limit: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield io.netty.handler.traffic.GlobalChannelTrafficShapingHandler.readChannelLimit:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/netty/handler/traffic/GlobalChannelTrafficShapingHandler;
}
SourceFile: "GlobalChannelTrafficShapingHandler.java"
NestMembers:
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$1 io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$1$1 io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$2 io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend
InnerClasses:
public abstract Sharable = io.netty.channel.ChannelHandler$Sharable of io.netty.channel.ChannelHandler
final ReopenReadTimerTask = io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask of io.netty.handler.traffic.AbstractTrafficShapingHandler
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$1
io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$2
final PerChannel = io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$PerChannel of io.netty.handler.traffic.GlobalChannelTrafficShapingHandler
private final ToSend = io.netty.handler.traffic.GlobalChannelTrafficShapingHandler$ToSend of io.netty.handler.traffic.GlobalChannelTrafficShapingHandler
RuntimeVisibleAnnotations:
io.netty.channel.ChannelHandler$Sharable()