public class io.netty.handler.flow.FlowControlHandler extends io.netty.channel.ChannelDuplexHandler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.netty.handler.flow.FlowControlHandler
super_class: io.netty.channel.ChannelDuplexHandler
{
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
private final boolean releaseMessages;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque queue;
descriptor: Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
flags: (0x0002) ACC_PRIVATE
private io.netty.channel.ChannelConfig config;
descriptor: Lio/netty/channel/ChannelConfig;
flags: (0x0002) ACC_PRIVATE
private boolean shouldConsume;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lio/netty/handler/flow/FlowControlHandler;
invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
putstatic io.netty.handler.flow.FlowControlHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
invokespecial io.netty.handler.flow.FlowControlHandler.<init>:(Z)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/handler/flow/FlowControlHandler;
public void <init>(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial io.netty.channel.ChannelDuplexHandler.<init>:()V
1: aload 0
iload 1
putfield io.netty.handler.flow.FlowControlHandler.releaseMessages:Z
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/flow/FlowControlHandler;
0 3 1 releaseMessages Z
MethodParameters:
Name Flags
releaseMessages
boolean isQueueEmpty();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
invokevirtual io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque.isEmpty:()Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/flow/FlowControlHandler;
private void destroy();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
ifnull 10
1: aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
invokevirtual io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque.isEmpty:()Z
ifne 8
2: getstatic io.netty.handler.flow.FlowControlHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "Non-empty queue: {}"
aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
invokeinterface io.netty.util.internal.logging.InternalLogger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
3: aload 0
getfield io.netty.handler.flow.FlowControlHandler.releaseMessages:Z
ifeq 8
4: goto 6
start local 1 5: StackMap locals: java.lang.Object
StackMap stack:
aload 1
invokestatic io.netty.util.ReferenceCountUtil.safeRelease:(Ljava/lang/Object;)V
end local 1 6: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
invokevirtual io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque.poll:()Ljava/lang/Object;
dup
astore 1
start local 1 7: ifnonnull 5
end local 1 8: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
invokevirtual io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque.recycle:()V
9: aload 0
aconst_null
putfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
10: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lio/netty/handler/flow/FlowControlHandler;
5 6 1 msg Ljava/lang/Object;
7 8 1 msg Ljava/lang/Object;
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
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokeinterface io.netty.channel.Channel.config:()Lio/netty/channel/ChannelConfig;
putfield io.netty.handler.flow.FlowControlHandler.config:Lio/netty/channel/ChannelConfig;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/handler/flow/FlowControlHandler;
0 2 1 ctx Lio/netty/channel/ChannelHandlerContext;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
public void channelInactive(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual io.netty.handler.flow.FlowControlHandler.destroy:()V
1: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelInactive:()Lio/netty/channel/ChannelHandlerContext;
pop
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/flow/FlowControlHandler;
0 3 1 ctx Lio/netty/channel/ChannelHandlerContext;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
public void read(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_1
invokevirtual io.netty.handler.flow.FlowControlHandler.dequeue:(Lio/netty/channel/ChannelHandlerContext;I)I
ifne 3
1: aload 0
iconst_1
putfield io.netty.handler.flow.FlowControlHandler.shouldConsume:Z
2: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.read:()Lio/netty/channel/ChannelHandlerContext;
pop
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/netty/handler/flow/FlowControlHandler;
0 4 1 ctx Lio/netty/channel/ChannelHandlerContext;
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=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
ifnonnull 2
1: aload 0
invokestatic io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque.newInstance:()Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
putfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
2: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
aload 2
invokevirtual io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque.offer:(Ljava/lang/Object;)Z
pop
3: aload 0
getfield io.netty.handler.flow.FlowControlHandler.shouldConsume:Z
ifeq 4
iconst_1
goto 5
StackMap locals:
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: istore 3
start local 3 6: aload 0
iconst_0
putfield io.netty.handler.flow.FlowControlHandler.shouldConsume:Z
7: aload 0
aload 1
iload 3
invokevirtual io.netty.handler.flow.FlowControlHandler.dequeue:(Lio/netty/channel/ChannelHandlerContext;I)I
pop
8: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lio/netty/handler/flow/FlowControlHandler;
0 9 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 9 2 msg Ljava/lang/Object;
6 9 3 minConsume I
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
msg
public void channelReadComplete(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=2, args_size=2
start local 0 start local 1 0: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/flow/FlowControlHandler;
0 1 1 ctx Lio/netty/channel/ChannelHandlerContext;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
private int dequeue(io.netty.channel.ChannelHandlerContext, int);
descriptor: (Lio/netty/channel/ChannelHandlerContext;I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
ifnull 12
1: iconst_0
istore 3
start local 3 2: goto 8
3: StackMap locals: int
StackMap stack:
aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
invokevirtual io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque.poll:()Ljava/lang/Object;
astore 4
start local 4 4: aload 4
ifnonnull 6
5: goto 9
6: StackMap locals: java.lang.Object
StackMap stack:
iinc 3 1
7: aload 1
aload 4
invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
pop
end local 4 8: StackMap locals:
StackMap stack:
iload 3
iload 2
if_icmplt 3
aload 0
getfield io.netty.handler.flow.FlowControlHandler.config:Lio/netty/channel/ChannelConfig;
invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
ifne 3
9: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.flow.FlowControlHandler.queue:Lio/netty/handler/flow/FlowControlHandler$RecyclableArrayDeque;
invokevirtual io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque.isEmpty:()Z
ifeq 11
iload 3
ifle 11
10: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelReadComplete:()Lio/netty/channel/ChannelHandlerContext;
pop
11: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 3 12: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lio/netty/handler/flow/FlowControlHandler;
0 13 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 13 2 minConsume I
2 12 3 consumed I
4 8 4 msg Ljava/lang/Object;
MethodParameters:
Name Flags
ctx
minConsume
}
SourceFile: "FlowControlHandler.java"
NestMembers:
io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque$1
InnerClasses:
private final RecyclableArrayDeque = io.netty.handler.flow.FlowControlHandler$RecyclableArrayDeque of io.netty.handler.flow.FlowControlHandler