public class io.netty.handler.traffic.ChannelTrafficShapingHandler 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.ChannelTrafficShapingHandler
super_class: io.netty.handler.traffic.AbstractTrafficShapingHandler
{
private final java.util.ArrayDeque<io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend> messagesQueue;
descriptor: Ljava/util/ArrayDeque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayDeque<Lio/netty/handler/traffic/ChannelTrafficShapingHandler$ToSend;>;
private long queueSize;
descriptor: J
flags: (0x0002) ACC_PRIVATE
public void <init>(long, long, long, long);
descriptor: (JJJJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=9, args_size=5
start local 0 start local 1 start local 3 start local 5 start local 7 0: aload 0
lload 1
lload 3
lload 5
lload 7
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJJJ)V
1: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
2: return
end local 7 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/traffic/ChannelTrafficShapingHandler;
0 3 1 writeLimit J
0 3 3 readLimit J
0 3 5 checkInterval J
0 3 7 maxTime J
MethodParameters:
Name Flags
writeLimit
readLimit
checkInterval
maxTime
public void <init>(long, long, long);
descriptor: (JJJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=7, args_size=4
start local 0 start local 1 start local 3 start local 5 0: aload 0
lload 1
lload 3
lload 5
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJJ)V
1: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
2: return
end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/traffic/ChannelTrafficShapingHandler;
0 3 1 writeLimit J
0 3 3 readLimit J
0 3 5 checkInterval J
MethodParameters:
Name Flags
writeLimit
readLimit
checkInterval
public void <init>(long, long);
descriptor: (JJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 3 0: aload 0
lload 1
lload 3
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJ)V
1: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
2: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/traffic/ChannelTrafficShapingHandler;
0 3 1 writeLimit J
0 3 3 readLimit J
MethodParameters:
Name Flags
writeLimit
readLimit
public void <init>(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
lload 1
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(J)V
1: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/traffic/ChannelTrafficShapingHandler;
0 3 1 checkInterval J
MethodParameters:
Name Flags
checkInterval
public void handlerAdded(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=3, args_size=2
start local 0 start local 1 0: new io.netty.handler.traffic.TrafficCounter
dup
aload 0
aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
new java.lang.StringBuilder
dup
ldc "ChannelTC"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
1: 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.ChannelTrafficShapingHandler.checkInterval:J
2: invokespecial io.netty.handler.traffic.TrafficCounter.<init>:(Lio/netty/handler/traffic/AbstractTrafficShapingHandler;Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/String;J)V
astore 2
start local 2 3: aload 0
aload 2
invokevirtual io.netty.handler.traffic.ChannelTrafficShapingHandler.setTrafficCounter:(Lio/netty/handler/traffic/TrafficCounter;)V
4: aload 2
invokevirtual io.netty.handler.traffic.TrafficCounter.start:()V
5: aload 0
aload 1
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.handlerAdded:(Lio/netty/channel/ChannelHandlerContext;)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/ChannelTrafficShapingHandler;
0 7 1 ctx Lio/netty/channel/ChannelHandlerContext;
3 7 2 trafficCounter Lio/netty/handler/traffic/TrafficCounter;
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=7, args_size=2
start local 0 start local 1 0: aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
invokevirtual io.netty.handler.traffic.TrafficCounter.stop:()V
1: aload 0
dup
astore 2
monitorenter
2: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokeinterface io.netty.channel.Channel.isActive:()Z
ifeq 11
3: aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.iterator:()Ljava/util/Iterator;
astore 4
goto 9
StackMap locals: io.netty.handler.traffic.ChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext io.netty.handler.traffic.ChannelTrafficShapingHandler top java.util.Iterator
StackMap stack:
4: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend
astore 3
start local 3 5: aload 0
aload 3
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
invokevirtual io.netty.handler.traffic.ChannelTrafficShapingHandler.calculateSize:(Ljava/lang/Object;)J
lstore 5
start local 5 6: aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 5
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
7: aload 0
dup
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.queueSize:J
lload 5
lsub
putfield io.netty.handler.traffic.ChannelTrafficShapingHandler.queueSize:J
8: aload 1
aload 3
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
aload 3
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$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 5 end local 3 9: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
10: goto 16
11: StackMap locals: io.netty.handler.traffic.ChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext io.netty.handler.traffic.ChannelTrafficShapingHandler
StackMap stack:
aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.iterator:()Ljava/util/Iterator;
astore 4
goto 15
StackMap locals: io.netty.handler.traffic.ChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext io.netty.handler.traffic.ChannelTrafficShapingHandler top java.util.Iterator
StackMap stack:
12: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend
astore 3
start local 3 13: aload 3
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
instanceof io.netty.buffer.ByteBuf
ifeq 15
14: aload 3
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
checkcast io.netty.buffer.ByteBuf
invokevirtual io.netty.buffer.ByteBuf.release:()Z
pop
end local 3 15: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 12
16: StackMap locals: io.netty.handler.traffic.ChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext io.netty.handler.traffic.ChannelTrafficShapingHandler
StackMap stack:
aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.clear:()V
17: aload 2
monitorexit
18: goto 21
StackMap locals:
StackMap stack: java.lang.Throwable
19: aload 2
monitorexit
20: athrow
21: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual io.netty.handler.traffic.ChannelTrafficShapingHandler.releaseWriteSuspended:(Lio/netty/channel/ChannelHandlerContext;)V
22: aload 0
aload 1
invokevirtual io.netty.handler.traffic.ChannelTrafficShapingHandler.releaseReadSuspended:(Lio/netty/channel/ChannelHandlerContext;)V
23: aload 0
aload 1
invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.handlerRemoved:(Lio/netty/channel/ChannelHandlerContext;)V
24: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lio/netty/handler/traffic/ChannelTrafficShapingHandler;
0 25 1 ctx Lio/netty/channel/ChannelHandlerContext;
5 9 3 toSend Lio/netty/handler/traffic/ChannelTrafficShapingHandler$ToSend;
6 9 5 size J
13 15 3 toSend Lio/netty/handler/traffic/ChannelTrafficShapingHandler$ToSend;
Exception table:
from to target type
2 18 19 any
19 20 19 any
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
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: (0x0000)
Code:
stack=7, locals=13, 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 0
dup
astore 11
monitorenter
1: lload 5
lconst_0
lcmp
ifne 6
aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifeq 6
2: aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 3
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
3: aload 1
aload 2
aload 9
invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
pop
4: aload 11
monitorexit
5: return
6: StackMap locals: io.netty.handler.traffic.ChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long long io.netty.channel.ChannelPromise top io.netty.handler.traffic.ChannelTrafficShapingHandler
StackMap stack:
new io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend
dup
lload 5
lload 7
ladd
aload 2
aload 9
invokespecial io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.<init>:(JLjava/lang/Object;Lio/netty/channel/ChannelPromise;)V
astore 10
start local 10 7: aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
aload 10
invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
8: aload 0
dup
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.queueSize:J
lload 3
ladd
putfield io.netty.handler.traffic.ChannelTrafficShapingHandler.queueSize:J
9: aload 0
aload 1
lload 5
aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.queueSize:J
invokevirtual io.netty.handler.traffic.ChannelTrafficShapingHandler.checkWriteSuspend:(Lio/netty/channel/ChannelHandlerContext;JJ)V
10: aload 11
monitorexit
11: goto 14
end local 10 StackMap locals:
StackMap stack: java.lang.Throwable
12: aload 11
monitorexit
13: athrow
start local 10 14: StackMap locals: io.netty.handler.traffic.ChannelTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long long io.netty.channel.ChannelPromise io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend
StackMap stack:
aload 10
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.relativeTimeAction:J
lstore 11
start local 11 15: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
new io.netty.handler.traffic.ChannelTrafficShapingHandler$1
dup
aload 0
aload 1
lload 11
invokespecial io.netty.handler.traffic.ChannelTrafficShapingHandler$1.<init>:(Lio/netty/handler/traffic/ChannelTrafficShapingHandler;Lio/netty/channel/ChannelHandlerContext;J)V
16: lload 5
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
17: invokeinterface io.netty.util.concurrent.EventExecutor.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/netty/util/concurrent/ScheduledFuture;
pop
18: return
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 19 0 this Lio/netty/handler/traffic/ChannelTrafficShapingHandler;
0 19 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 19 2 msg Ljava/lang/Object;
0 19 3 size J
0 19 5 delay J
0 19 7 now J
0 19 9 promise Lio/netty/channel/ChannelPromise;
7 12 10 newToSend Lio/netty/handler/traffic/ChannelTrafficShapingHandler$ToSend;
14 19 10 newToSend Lio/netty/handler/traffic/ChannelTrafficShapingHandler$ToSend;
15 19 11 futureNow J
Exception table:
from to target type
1 5 12 any
6 11 12 any
12 13 12 any
MethodParameters:
Name Flags
ctx final
msg final
size final
delay final
now final
promise final
private void sendAllValid(io.netty.channel.ChannelHandlerContext, long);
descriptor: (Lio/netty/channel/ChannelHandlerContext;J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 0
dup
astore 4
monitorenter
1: aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.pollFirst:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend
astore 5
start local 5 2: goto 12
3: StackMap locals: io.netty.handler.traffic.ChannelTrafficShapingHandler io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend
StackMap stack:
aload 5
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.relativeTimeAction:J
lload 2
lcmp
ifgt 9
4: aload 0
aload 5
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
invokevirtual io.netty.handler.traffic.ChannelTrafficShapingHandler.calculateSize:(Ljava/lang/Object;)J
lstore 6
start local 6 5: aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
lload 6
invokevirtual io.netty.handler.traffic.TrafficCounter.bytesRealWriteFlowControl:(J)V
6: aload 0
dup
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.queueSize:J
lload 6
lsub
putfield io.netty.handler.traffic.ChannelTrafficShapingHandler.queueSize:J
7: aload 1
aload 5
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend.toSend:Ljava/lang/Object;
aload 5
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler$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 6 8: goto 11
9: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
aload 5
invokevirtual java.util.ArrayDeque.addFirst:(Ljava/lang/Object;)V
10: goto 13
11: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.pollFirst:()Ljava/lang/Object;
checkcast io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend
astore 5
StackMap locals:
StackMap stack:
12: aload 5
ifnonnull 3
13: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.traffic.ChannelTrafficShapingHandler.messagesQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifeq 15
14: aload 0
aload 1
invokevirtual io.netty.handler.traffic.ChannelTrafficShapingHandler.releaseWriteSuspended:(Lio/netty/channel/ChannelHandlerContext;)V
end local 5 15: StackMap locals:
StackMap stack:
aload 4
monitorexit
16: goto 19
StackMap locals:
StackMap stack: java.lang.Throwable
17: aload 4
monitorexit
18: athrow
19: StackMap locals:
StackMap stack:
aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
pop
20: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lio/netty/handler/traffic/ChannelTrafficShapingHandler;
0 21 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 21 2 now J
2 15 5 newToSend Lio/netty/handler/traffic/ChannelTrafficShapingHandler$ToSend;
5 8 6 size J
Exception table:
from to target type
1 16 17 any
17 18 17 any
MethodParameters:
Name Flags
ctx final
now final
public long queueSize();
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.ChannelTrafficShapingHandler.queueSize:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/traffic/ChannelTrafficShapingHandler;
}
SourceFile: "ChannelTrafficShapingHandler.java"
NestMembers:
io.netty.handler.traffic.ChannelTrafficShapingHandler$1 io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend
InnerClasses:
io.netty.handler.traffic.ChannelTrafficShapingHandler$1
private final ToSend = io.netty.handler.traffic.ChannelTrafficShapingHandler$ToSend of io.netty.handler.traffic.ChannelTrafficShapingHandler