public class io.netty.handler.timeout.IdleStateHandler extends io.netty.channel.ChannelDuplexHandler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.netty.handler.timeout.IdleStateHandler
super_class: io.netty.channel.ChannelDuplexHandler
{
private static final long MIN_TIMEOUT_NANOS;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final io.netty.channel.ChannelFutureListener writeListener;
descriptor: Lio/netty/channel/ChannelFutureListener;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean observeOutput;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long readerIdleTimeNanos;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long writerIdleTimeNanos;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long allIdleTimeNanos;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.concurrent.ScheduledFuture<?> readerIdleTimeout;
descriptor: Ljava/util/concurrent/ScheduledFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/ScheduledFuture<*>;
private long lastReadTime;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean firstReaderIdleEvent;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.util.concurrent.ScheduledFuture<?> writerIdleTimeout;
descriptor: Ljava/util/concurrent/ScheduledFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/ScheduledFuture<*>;
private long lastWriteTime;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean firstWriterIdleEvent;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.util.concurrent.ScheduledFuture<?> allIdleTimeout;
descriptor: Ljava/util/concurrent/ScheduledFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/ScheduledFuture<*>;
private boolean firstAllIdleEvent;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private byte state;
descriptor: B
flags: (0x0002) ACC_PRIVATE
private boolean reading;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private long lastChangeCheckTimeStamp;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private int lastMessageHashCode;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private long lastPendingWriteBytes;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private static volatile int[] $SWITCH_TABLE$io$netty$handler$timeout$IdleState;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
lconst_1
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
putstatic io.netty.handler.timeout.IdleStateHandler.MIN_TIMEOUT_NANOS:J
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(int, int, int);
descriptor: (III)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
iload 1
i2l
iload 2
i2l
iload 3
i2l
1: getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokespecial io.netty.handler.timeout.IdleStateHandler.<init>:(JJJLjava/util/concurrent/TimeUnit;)V
2: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 3 1 readerIdleTimeSeconds I
0 3 2 writerIdleTimeSeconds I
0 3 3 allIdleTimeSeconds I
MethodParameters:
Name Flags
readerIdleTimeSeconds
writerIdleTimeSeconds
allIdleTimeSeconds
public void <init>(long, long, long, java.util.concurrent.TimeUnit);
descriptor: (JJJLjava/util/concurrent/TimeUnit;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=8, args_size=5
start local 0 start local 1 start local 3 start local 5 start local 7 0: aload 0
iconst_0
lload 1
lload 3
lload 5
aload 7
invokespecial io.netty.handler.timeout.IdleStateHandler.<init>:(ZJJJLjava/util/concurrent/TimeUnit;)V
1: return
end local 7 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 2 1 readerIdleTime J
0 2 3 writerIdleTime J
0 2 5 allIdleTime J
0 2 7 unit Ljava/util/concurrent/TimeUnit;
MethodParameters:
Name Flags
readerIdleTime
writerIdleTime
allIdleTime
unit
public void <init>(boolean, long, long, long, java.util.concurrent.TimeUnit);
descriptor: (ZJJJLjava/util/concurrent/TimeUnit;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 6 start local 8 0: aload 0
invokespecial io.netty.channel.ChannelDuplexHandler.<init>:()V
1: aload 0
new io.netty.handler.timeout.IdleStateHandler$1
dup
aload 0
invokespecial io.netty.handler.timeout.IdleStateHandler$1.<init>:(Lio/netty/handler/timeout/IdleStateHandler;)V
putfield io.netty.handler.timeout.IdleStateHandler.writeListener:Lio/netty/channel/ChannelFutureListener;
2: aload 0
iconst_1
putfield io.netty.handler.timeout.IdleStateHandler.firstReaderIdleEvent:Z
3: aload 0
iconst_1
putfield io.netty.handler.timeout.IdleStateHandler.firstWriterIdleEvent:Z
4: aload 0
iconst_1
putfield io.netty.handler.timeout.IdleStateHandler.firstAllIdleEvent:Z
5: aload 8
ifnonnull 7
6: new java.lang.NullPointerException
dup
ldc "unit"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: io.netty.handler.timeout.IdleStateHandler int long long long java.util.concurrent.TimeUnit
StackMap stack:
aload 0
iload 1
putfield io.netty.handler.timeout.IdleStateHandler.observeOutput:Z
8: lload 2
lconst_0
lcmp
ifgt 11
9: aload 0
lconst_0
putfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeNanos:J
10: goto 12
11: StackMap locals:
StackMap stack:
aload 0
aload 8
lload 2
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
getstatic io.netty.handler.timeout.IdleStateHandler.MIN_TIMEOUT_NANOS:J
invokestatic java.lang.Math.max:(JJ)J
putfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeNanos:J
12: StackMap locals:
StackMap stack:
lload 4
lconst_0
lcmp
ifgt 15
13: aload 0
lconst_0
putfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeNanos:J
14: goto 16
15: StackMap locals:
StackMap stack:
aload 0
aload 8
lload 4
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
getstatic io.netty.handler.timeout.IdleStateHandler.MIN_TIMEOUT_NANOS:J
invokestatic java.lang.Math.max:(JJ)J
putfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeNanos:J
16: StackMap locals:
StackMap stack:
lload 6
lconst_0
lcmp
ifgt 19
17: aload 0
lconst_0
putfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeNanos:J
18: goto 20
19: StackMap locals:
StackMap stack:
aload 0
aload 8
lload 6
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
getstatic io.netty.handler.timeout.IdleStateHandler.MIN_TIMEOUT_NANOS:J
invokestatic java.lang.Math.max:(JJ)J
putfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeNanos:J
20: StackMap locals:
StackMap stack:
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 21 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 21 1 observeOutput Z
0 21 2 readerIdleTime J
0 21 4 writerIdleTime J
0 21 6 allIdleTime J
0 21 8 unit Ljava/util/concurrent/TimeUnit;
MethodParameters:
Name Flags
observeOutput
readerIdleTime
writerIdleTime
allIdleTime
unit
public long getReaderIdleTimeInMillis();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeNanos:J
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/timeout/IdleStateHandler;
public long getWriterIdleTimeInMillis();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeNanos:J
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/timeout/IdleStateHandler;
public long getAllIdleTimeInMillis();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeNanos:J
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/timeout/IdleStateHandler;
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 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokeinterface io.netty.channel.Channel.isActive:()Z
ifeq 2
aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokeinterface io.netty.channel.Channel.isRegistered:()Z
ifeq 2
1: aload 0
aload 1
invokevirtual io.netty.handler.timeout.IdleStateHandler.initialize:(Lio/netty/channel/ChannelHandlerContext;)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 3 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=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual io.netty.handler.timeout.IdleStateHandler.destroy:()V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 2 1 ctx Lio/netty/channel/ChannelHandlerContext;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
public void channelRegistered(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 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokeinterface io.netty.channel.Channel.isActive:()Z
ifeq 2
1: aload 0
aload 1
invokevirtual io.netty.handler.timeout.IdleStateHandler.initialize:(Lio/netty/channel/ChannelHandlerContext;)V
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokespecial io.netty.channel.ChannelDuplexHandler.channelRegistered:(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/timeout/IdleStateHandler;
0 4 1 ctx Lio/netty/channel/ChannelHandlerContext;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
public void channelActive(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.timeout.IdleStateHandler.initialize:(Lio/netty/channel/ChannelHandlerContext;)V
1: aload 0
aload 1
invokespecial io.netty.channel.ChannelDuplexHandler.channelActive:(Lio/netty/channel/ChannelHandlerContext;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 3 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=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual io.netty.handler.timeout.IdleStateHandler.destroy:()V
1: aload 0
aload 1
invokespecial io.netty.channel.ChannelDuplexHandler.channelInactive:(Lio/netty/channel/ChannelHandlerContext;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 3 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=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeNanos:J
lconst_0
lcmp
ifgt 1
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeNanos:J
lconst_0
lcmp
ifle 3
1: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield io.netty.handler.timeout.IdleStateHandler.reading:Z
2: aload 0
aload 0
iconst_1
dup_x1
putfield io.netty.handler.timeout.IdleStateHandler.firstAllIdleEvent:Z
putfield io.netty.handler.timeout.IdleStateHandler.firstReaderIdleEvent:Z
3: StackMap locals:
StackMap stack:
aload 1
aload 2
invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
pop
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 5 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 5 2 msg Ljava/lang/Object;
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=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeNanos:J
lconst_0
lcmp
ifgt 1
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeNanos:J
lconst_0
lcmp
ifle 4
StackMap locals:
StackMap stack:
1: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.reading:Z
ifeq 4
2: aload 0
aload 0
invokevirtual io.netty.handler.timeout.IdleStateHandler.ticksInNanos:()J
putfield io.netty.handler.timeout.IdleStateHandler.lastReadTime:J
3: aload 0
iconst_0
putfield io.netty.handler.timeout.IdleStateHandler.reading:Z
4: StackMap locals:
StackMap stack:
aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelReadComplete:()Lio/netty/channel/ChannelHandlerContext;
pop
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 6 1 ctx Lio/netty/channel/ChannelHandlerContext;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
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=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeNanos:J
lconst_0
lcmp
ifgt 1
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeNanos:J
lconst_0
lcmp
ifle 3
1: StackMap locals:
StackMap stack:
aload 1
aload 2
aload 3
invokeinterface io.netty.channel.ChannelPromise.unvoid:()Lio/netty/channel/ChannelPromise;
invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.writeListener:Lio/netty/channel/ChannelFutureListener;
invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
pop
2: goto 4
3: StackMap locals:
StackMap stack:
aload 1
aload 2
aload 3
invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
pop
4: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 5 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 5 2 msg Ljava/lang/Object;
0 5 3 promise Lio/netty/channel/ChannelPromise;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
msg
promise
private void initialize(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.state:B
tableswitch { // 1 - 2
1: 1
2: 1
default: 2
}
1: StackMap locals:
StackMap stack:
return
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield io.netty.handler.timeout.IdleStateHandler.state:B
3: aload 0
aload 1
invokevirtual io.netty.handler.timeout.IdleStateHandler.initOutputChanged:(Lio/netty/channel/ChannelHandlerContext;)V
4: aload 0
aload 0
aload 0
invokevirtual io.netty.handler.timeout.IdleStateHandler.ticksInNanos:()J
dup2_x1
putfield io.netty.handler.timeout.IdleStateHandler.lastWriteTime:J
putfield io.netty.handler.timeout.IdleStateHandler.lastReadTime:J
5: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeNanos:J
lconst_0
lcmp
ifle 9
6: aload 0
aload 0
aload 1
new io.netty.handler.timeout.IdleStateHandler$ReaderIdleTimeoutTask
dup
aload 0
aload 1
invokespecial io.netty.handler.timeout.IdleStateHandler$ReaderIdleTimeoutTask.<init>:(Lio/netty/handler/timeout/IdleStateHandler;Lio/netty/channel/ChannelHandlerContext;)V
7: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeNanos:J
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
8: invokevirtual io.netty.handler.timeout.IdleStateHandler.schedule:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
putfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
9: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeNanos:J
lconst_0
lcmp
ifle 13
10: aload 0
aload 0
aload 1
new io.netty.handler.timeout.IdleStateHandler$WriterIdleTimeoutTask
dup
aload 0
aload 1
invokespecial io.netty.handler.timeout.IdleStateHandler$WriterIdleTimeoutTask.<init>:(Lio/netty/handler/timeout/IdleStateHandler;Lio/netty/channel/ChannelHandlerContext;)V
11: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeNanos:J
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
12: invokevirtual io.netty.handler.timeout.IdleStateHandler.schedule:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
putfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
13: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeNanos:J
lconst_0
lcmp
ifle 17
14: aload 0
aload 0
aload 1
new io.netty.handler.timeout.IdleStateHandler$AllIdleTimeoutTask
dup
aload 0
aload 1
invokespecial io.netty.handler.timeout.IdleStateHandler$AllIdleTimeoutTask.<init>:(Lio/netty/handler/timeout/IdleStateHandler;Lio/netty/channel/ChannelHandlerContext;)V
15: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeNanos:J
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
16: invokevirtual io.netty.handler.timeout.IdleStateHandler.schedule:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
putfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
17: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 18 1 ctx Lio/netty/channel/ChannelHandlerContext;
MethodParameters:
Name Flags
ctx
long ticksInNanos();
descriptor: ()J
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: invokestatic java.lang.System.nanoTime:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/timeout/IdleStateHandler;
java.util.concurrent.ScheduledFuture<?> schedule(io.netty.channel.ChannelHandlerContext, java.lang.Runnable, long, java.util.concurrent.TimeUnit);
descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
flags: (0x0000)
Code:
stack=5, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 5 0: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
aload 2
lload 3
aload 5
invokeinterface io.netty.util.concurrent.EventExecutor.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/netty/util/concurrent/ScheduledFuture;
areturn
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 1 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 1 2 task Ljava/lang/Runnable;
0 1 3 delay J
0 1 5 unit Ljava/util/concurrent/TimeUnit;
Signature: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>;
MethodParameters:
Name Flags
ctx
task
delay
unit
private void destroy();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_2
putfield io.netty.handler.timeout.IdleStateHandler.state:B
1: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
ifnull 4
2: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
iconst_0
invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
pop
3: aload 0
aconst_null
putfield io.netty.handler.timeout.IdleStateHandler.readerIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
4: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
ifnull 7
5: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
iconst_0
invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
pop
6: aload 0
aconst_null
putfield io.netty.handler.timeout.IdleStateHandler.writerIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
7: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
ifnull 10
8: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
iconst_0
invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
pop
9: aload 0
aconst_null
putfield io.netty.handler.timeout.IdleStateHandler.allIdleTimeout:Ljava/util/concurrent/ScheduledFuture;
10: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lio/netty/handler/timeout/IdleStateHandler;
protected void channelIdle(io.netty.channel.ChannelHandlerContext, io.netty.handler.timeout.IdleStateEvent);
descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/timeout/IdleStateEvent;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokeinterface io.netty.channel.ChannelHandlerContext.fireUserEventTriggered:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
pop
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 2 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 2 2 evt Lio/netty/handler/timeout/IdleStateEvent;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
ctx
evt
protected io.netty.handler.timeout.IdleStateEvent newIdleStateEvent(io.netty.handler.timeout.IdleState, boolean);
descriptor: (Lio/netty/handler/timeout/IdleState;Z)Lio/netty/handler/timeout/IdleStateEvent;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: invokestatic io.netty.handler.timeout.IdleStateHandler.$SWITCH_TABLE$io$netty$handler$timeout$IdleState:()[I
aload 1
invokevirtual io.netty.handler.timeout.IdleState.ordinal:()I
iaload
tableswitch { // 1 - 3
1: 4
2: 7
3: 1
default: 10
}
1: StackMap locals:
StackMap stack:
iload 2
ifeq 2
getstatic io.netty.handler.timeout.IdleStateEvent.FIRST_ALL_IDLE_STATE_EVENT:Lio/netty/handler/timeout/IdleStateEvent;
goto 3
StackMap locals:
StackMap stack:
2: getstatic io.netty.handler.timeout.IdleStateEvent.ALL_IDLE_STATE_EVENT:Lio/netty/handler/timeout/IdleStateEvent;
StackMap locals:
StackMap stack: io.netty.handler.timeout.IdleStateEvent
3: areturn
4: StackMap locals:
StackMap stack:
iload 2
ifeq 5
getstatic io.netty.handler.timeout.IdleStateEvent.FIRST_READER_IDLE_STATE_EVENT:Lio/netty/handler/timeout/IdleStateEvent;
goto 6
StackMap locals:
StackMap stack:
5: getstatic io.netty.handler.timeout.IdleStateEvent.READER_IDLE_STATE_EVENT:Lio/netty/handler/timeout/IdleStateEvent;
StackMap locals:
StackMap stack: io.netty.handler.timeout.IdleStateEvent
6: areturn
7: StackMap locals:
StackMap stack:
iload 2
ifeq 8
getstatic io.netty.handler.timeout.IdleStateEvent.FIRST_WRITER_IDLE_STATE_EVENT:Lio/netty/handler/timeout/IdleStateEvent;
goto 9
StackMap locals:
StackMap stack:
8: getstatic io.netty.handler.timeout.IdleStateEvent.WRITER_IDLE_STATE_EVENT:Lio/netty/handler/timeout/IdleStateEvent;
StackMap locals:
StackMap stack: io.netty.handler.timeout.IdleStateEvent
9: areturn
10: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Unhandled: state="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ", first="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 11 1 state Lio/netty/handler/timeout/IdleState;
0 11 2 first Z
MethodParameters:
Name Flags
state
first
private void initOutputChanged(io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.observeOutput:Z
ifeq 7
1: aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
astore 2
start local 2 2: aload 2
invokeinterface io.netty.channel.Channel.unsafe:()Lio/netty/channel/Channel$Unsafe;
astore 3
start local 3 3: aload 3
invokeinterface io.netty.channel.Channel$Unsafe.outboundBuffer:()Lio/netty/channel/ChannelOutboundBuffer;
astore 4
start local 4 4: aload 4
ifnull 7
5: aload 0
aload 4
invokevirtual io.netty.channel.ChannelOutboundBuffer.current:()Ljava/lang/Object;
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
putfield io.netty.handler.timeout.IdleStateHandler.lastMessageHashCode:I
6: aload 0
aload 4
invokevirtual io.netty.channel.ChannelOutboundBuffer.totalPendingWriteBytes:()J
putfield io.netty.handler.timeout.IdleStateHandler.lastPendingWriteBytes:J
end local 4 end local 3 end local 2 7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 8 1 ctx Lio/netty/channel/ChannelHandlerContext;
2 7 2 channel Lio/netty/channel/Channel;
3 7 3 unsafe Lio/netty/channel/Channel$Unsafe;
4 7 4 buf Lio/netty/channel/ChannelOutboundBuffer;
MethodParameters:
Name Flags
ctx
private boolean hasOutputChanged(io.netty.channel.ChannelHandlerContext, boolean);
descriptor: (Lio/netty/channel/ChannelHandlerContext;Z)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.observeOutput:Z
ifeq 16
1: aload 0
getfield io.netty.handler.timeout.IdleStateHandler.lastChangeCheckTimeStamp:J
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.lastWriteTime:J
lcmp
ifeq 5
2: aload 0
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.lastWriteTime:J
putfield io.netty.handler.timeout.IdleStateHandler.lastChangeCheckTimeStamp:J
3: iload 2
ifne 5
4: iconst_1
ireturn
5: StackMap locals:
StackMap stack:
aload 1
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
astore 3
start local 3 6: aload 3
invokeinterface io.netty.channel.Channel.unsafe:()Lio/netty/channel/Channel$Unsafe;
astore 4
start local 4 7: aload 4
invokeinterface io.netty.channel.Channel$Unsafe.outboundBuffer:()Lio/netty/channel/ChannelOutboundBuffer;
astore 5
start local 5 8: aload 5
ifnull 16
9: aload 5
invokevirtual io.netty.channel.ChannelOutboundBuffer.current:()Ljava/lang/Object;
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
istore 6
start local 6 10: aload 5
invokevirtual io.netty.channel.ChannelOutboundBuffer.totalPendingWriteBytes:()J
lstore 7
start local 7 11: iload 6
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.lastMessageHashCode:I
if_icmpne 12
lload 7
aload 0
getfield io.netty.handler.timeout.IdleStateHandler.lastPendingWriteBytes:J
lcmp
ifeq 16
12: StackMap locals: io.netty.handler.timeout.IdleStateHandler io.netty.channel.ChannelHandlerContext int io.netty.channel.Channel io.netty.channel.Channel$Unsafe io.netty.channel.ChannelOutboundBuffer int long
StackMap stack:
aload 0
iload 6
putfield io.netty.handler.timeout.IdleStateHandler.lastMessageHashCode:I
13: aload 0
lload 7
putfield io.netty.handler.timeout.IdleStateHandler.lastPendingWriteBytes:J
14: iload 2
ifne 16
15: iconst_1
ireturn
end local 7 end local 6 end local 5 end local 4 end local 3 16: StackMap locals: io.netty.handler.timeout.IdleStateHandler io.netty.channel.ChannelHandlerContext int
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lio/netty/handler/timeout/IdleStateHandler;
0 17 1 ctx Lio/netty/channel/ChannelHandlerContext;
0 17 2 first Z
6 16 3 channel Lio/netty/channel/Channel;
7 16 4 unsafe Lio/netty/channel/Channel$Unsafe;
8 16 5 buf Lio/netty/channel/ChannelOutboundBuffer;
10 16 6 messageHashCode I
11 16 7 pendingWriteBytes J
MethodParameters:
Name Flags
ctx
first
static int[] $SWITCH_TABLE$io$netty$handler$timeout$IdleState();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic io.netty.handler.timeout.IdleStateHandler.$SWITCH_TABLE$io$netty$handler$timeout$IdleState:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic io.netty.handler.timeout.IdleState.values:()[Lio/netty/handler/timeout/IdleState;
arraylength
newarray 10
astore 0
2: aload 0
getstatic io.netty.handler.timeout.IdleState.ALL_IDLE:Lio/netty/handler/timeout/IdleState;
invokevirtual io.netty.handler.timeout.IdleState.ordinal:()I
iconst_3
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic io.netty.handler.timeout.IdleState.READER_IDLE:Lio/netty/handler/timeout/IdleState;
invokevirtual io.netty.handler.timeout.IdleState.ordinal:()I
iconst_1
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic io.netty.handler.timeout.IdleState.WRITER_IDLE:Lio/netty/handler/timeout/IdleState;
invokevirtual io.netty.handler.timeout.IdleState.ordinal:()I
iconst_2
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
dup
putstatic io.netty.handler.timeout.IdleStateHandler.$SWITCH_TABLE$io$netty$handler$timeout$IdleState:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
}
SourceFile: "IdleStateHandler.java"
NestMembers:
io.netty.handler.timeout.IdleStateHandler$1 io.netty.handler.timeout.IdleStateHandler$AbstractIdleTask io.netty.handler.timeout.IdleStateHandler$AllIdleTimeoutTask io.netty.handler.timeout.IdleStateHandler$ReaderIdleTimeoutTask io.netty.handler.timeout.IdleStateHandler$WriterIdleTimeoutTask
InnerClasses:
public abstract Unsafe = io.netty.channel.Channel$Unsafe of io.netty.channel.Channel
io.netty.handler.timeout.IdleStateHandler$1
private abstract AbstractIdleTask = io.netty.handler.timeout.IdleStateHandler$AbstractIdleTask of io.netty.handler.timeout.IdleStateHandler
private final AllIdleTimeoutTask = io.netty.handler.timeout.IdleStateHandler$AllIdleTimeoutTask of io.netty.handler.timeout.IdleStateHandler
private final ReaderIdleTimeoutTask = io.netty.handler.timeout.IdleStateHandler$ReaderIdleTimeoutTask of io.netty.handler.timeout.IdleStateHandler
private final WriterIdleTimeoutTask = io.netty.handler.timeout.IdleStateHandler$WriterIdleTimeoutTask of io.netty.handler.timeout.IdleStateHandler