public final class io.undertow.server.protocol.ParseTimeoutUpdater implements java.lang.Runnable, io.undertow.server.ServerConnection$CloseListener, java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.undertow.server.protocol.ParseTimeoutUpdater
  super_class: java.lang.Object
{
  private final org.xnio.channels.ConnectedChannel connection;
    descriptor: Lorg/xnio/channels/ConnectedChannel;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long requestParseTimeout;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long requestIdleTimeout;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile org.xnio.XnioExecutor$Key handle;
    descriptor: Lorg/xnio/XnioExecutor$Key;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile long expireTime;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean parsing;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final int FUZZ_FACTOR;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 50

  private final java.lang.Runnable closeTask;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(org.xnio.channels.ConnectedChannel, long, long);
    descriptor: (Lorg/xnio/channels/ConnectedChannel;JJ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=6, args_size=4
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
        start local 1 // org.xnio.channels.ConnectedChannel channel
        start local 2 // long requestParseTimeout
        start local 4 // long requestIdleTimeout
         0: .line 60
            aload 0 /* this */
            aload 1 /* channel */
            lload 2 /* requestParseTimeout */
            lload 4 /* requestIdleTimeout */
            new io.undertow.server.protocol.ParseTimeoutUpdater$1
            dup
            aload 1 /* channel */
            invokespecial io.undertow.server.protocol.ParseTimeoutUpdater$1.<init>:(Lorg/xnio/channels/ConnectedChannel;)V
            invokespecial io.undertow.server.protocol.ParseTimeoutUpdater.<init>:(Lorg/xnio/channels/ConnectedChannel;JJLjava/lang/Runnable;)V
         1: .line 66
            return
        end local 4 // long requestIdleTimeout
        end local 2 // long requestParseTimeout
        end local 1 // org.xnio.channels.ConnectedChannel channel
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lio/undertow/server/protocol/ParseTimeoutUpdater;
            0    2     1              channel  Lorg/xnio/channels/ConnectedChannel;
            0    2     2  requestParseTimeout  J
            0    2     4   requestIdleTimeout  J
    MethodParameters:
                     Name  Flags
      channel              
      requestParseTimeout  
      requestIdleTimeout   

  public void <init>(org.xnio.channels.ConnectedChannel, long, long, java.lang.Runnable);
    descriptor: (Lorg/xnio/channels/ConnectedChannel;JJLjava/lang/Runnable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=5
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
        start local 1 // org.xnio.channels.ConnectedChannel channel
        start local 2 // long requestParseTimeout
        start local 4 // long requestIdleTimeout
        start local 6 // java.lang.Runnable closeTask
         0: .line 74
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 44
            aload 0 /* this */
            ldc -1
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.expireTime:J
         2: .line 45
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.parsing:Z
         3: .line 75
            aload 0 /* this */
            aload 1 /* channel */
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.connection:Lorg/xnio/channels/ConnectedChannel;
         4: .line 76
            aload 0 /* this */
            lload 2 /* requestParseTimeout */
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.requestParseTimeout:J
         5: .line 77
            aload 0 /* this */
            lload 4 /* requestIdleTimeout */
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.requestIdleTimeout:J
         6: .line 78
            aload 0 /* this */
            aload 6 /* closeTask */
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.closeTask:Ljava/lang/Runnable;
         7: .line 79
            return
        end local 6 // java.lang.Runnable closeTask
        end local 4 // long requestIdleTimeout
        end local 2 // long requestParseTimeout
        end local 1 // org.xnio.channels.ConnectedChannel channel
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    8     0                 this  Lio/undertow/server/protocol/ParseTimeoutUpdater;
            0    8     1              channel  Lorg/xnio/channels/ConnectedChannel;
            0    8     2  requestParseTimeout  J
            0    8     4   requestIdleTimeout  J
            0    8     6            closeTask  Ljava/lang/Runnable;
    MethodParameters:
                     Name  Flags
      channel              
      requestParseTimeout  
      requestIdleTimeout   
      closeTask            

  public void connectionIdle();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
         0: .line 84
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.parsing:Z
         1: .line 85
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.requestIdleTimeout:J
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.handleSchedule:(J)V
         2: .line 86
            return
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/server/protocol/ParseTimeoutUpdater;

  private void handleSchedule(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=8, args_size=2
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
        start local 1 // long timeout
         0: .line 90
            lload 1 /* timeout */
            ldc -1
            lcmp
            ifne 3
         1: .line 91
            aload 0 /* this */
            ldc -1
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.expireTime:J
         2: .line 92
            return
         3: .line 95
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            lload 1 /* timeout */
            ladd
            lstore 3 /* newExpireTime */
        start local 3 // long newExpireTime
         4: .line 96
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.expireTime:J
            lstore 5 /* oldExpireTime */
        start local 5 // long oldExpireTime
         5: .line 97
            aload 0 /* this */
            lload 3 /* newExpireTime */
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.expireTime:J
         6: .line 99
            lload 3 /* newExpireTime */
            lload 5 /* oldExpireTime */
            lcmp
            ifge 10
         7: .line 100
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
            ifnull 10
         8: .line 101
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
            invokeinterface org.xnio.XnioExecutor$Key.remove:()Z
            pop
         9: .line 102
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
        10: .line 105
      StackMap locals: long long
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
            ifnonnull 15
        11: .line 107
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.connection:Lorg/xnio/channels/ConnectedChannel;
            invokeinterface org.xnio.channels.ConnectedChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            lload 1 /* timeout */
            ldc 50
            ladd
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokestatic io.undertow.util.WorkerUtils.executeAfter:(Lorg/xnio/XnioIoThread;Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
        12: .line 108
            goto 15
      StackMap locals:
      StackMap stack: java.util.concurrent.RejectedExecutionException
        13: astore 7 /* e */
        start local 7 // java.util.concurrent.RejectedExecutionException e
        14: .line 109
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Failed to schedule parse timeout, server is probably shutting down"
            aload 7 /* e */
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 7 // java.util.concurrent.RejectedExecutionException e
        15: .line 112
      StackMap locals:
      StackMap stack:
            return
        end local 5 // long oldExpireTime
        end local 3 // long newExpireTime
        end local 1 // long timeout
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0           this  Lio/undertow/server/protocol/ParseTimeoutUpdater;
            0   16     1        timeout  J
            4   16     3  newExpireTime  J
            5   16     5  oldExpireTime  J
           14   15     7              e  Ljava/util/concurrent/RejectedExecutionException;
      Exception table:
        from    to  target  type
          11    12      13  Class java.util.concurrent.RejectedExecutionException
    MethodParameters:
         Name  Flags
      timeout  

  public void failedParse();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
         0: .line 120
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.parsing:Z
            ifne 3
         1: .line 121
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.parsing:Z
         2: .line 122
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.requestParseTimeout:J
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.handleSchedule:(J)V
         3: .line 124
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/server/protocol/ParseTimeoutUpdater;

  public void requestStarted();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
         0: .line 133
            aload 0 /* this */
            ldc -1
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.expireTime:J
         1: .line 134
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.parsing:Z
         2: .line 135
            return
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/server/protocol/ParseTimeoutUpdater;

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
         0: .line 139
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.connection:Lorg/xnio/channels/ConnectedChannel;
            invokeinterface org.xnio.channels.ConnectedChannel.isOpen:()Z
            ifne 2
         1: .line 140
            return
         2: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
         3: .line 143
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.expireTime:J
            lconst_0
            lcmp
            ifle 13
         4: .line 144
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 1 /* now */
        start local 1 // long now
         5: .line 145
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.expireTime:J
            lload 1 /* now */
            lcmp
            ifle 8
         6: .line 146
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.connection:Lorg/xnio/channels/ConnectedChannel;
            invokeinterface org.xnio.channels.ConnectedChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.expireTime:J
            lload 1 /* now */
            lsub
            ldc 50
            ladd
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokestatic io.undertow.util.WorkerUtils.executeAfter:(Lorg/xnio/XnioIoThread;Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
         7: .line 147
            goto 13
         8: .line 148
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.parsing:Z
            ifeq 11
         9: .line 149
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.connection:Lorg/xnio/channels/ConnectedChannel;
            invokeinterface org.xnio.channels.ConnectedChannel.getPeerAddress:()Ljava/net/SocketAddress;
            invokeinterface io.undertow.UndertowLogger.parseRequestTimedOut:(Ljava/net/SocketAddress;)V
        10: .line 150
            goto 12
        11: .line 151
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Timing out idle connection from %s"
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.connection:Lorg/xnio/channels/ConnectedChannel;
            invokeinterface org.xnio.channels.ConnectedChannel.getPeerAddress:()Ljava/net/SocketAddress;
            invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/String;Ljava/lang/Object;)V
        12: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.closeTask:Ljava/lang/Runnable;
            invokeinterface java.lang.Runnable.run:()V
        end local 1 // long now
        13: .line 156
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lio/undertow/server/protocol/ParseTimeoutUpdater;
            5   13     1   now  J

  public void closed(io.undertow.server.ServerConnection);
    descriptor: (Lio/undertow/server/ServerConnection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
        start local 1 // io.undertow.server.ServerConnection connection
         0: .line 160
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.close:()V
         1: .line 161
            return
        end local 1 // io.undertow.server.ServerConnection connection
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lio/undertow/server/protocol/ParseTimeoutUpdater;
            0    2     1  connection  Lio/undertow/server/ServerConnection;
    MethodParameters:
            Name  Flags
      connection  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
         0: .line 164
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
            ifnull 3
         1: .line 165
            aload 0 /* this */
            getfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
            invokeinterface org.xnio.XnioExecutor$Key.remove:()Z
            pop
         2: .line 166
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.ParseTimeoutUpdater.handle:Lorg/xnio/XnioExecutor$Key;
         3: .line 168
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.ParseTimeoutUpdater this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/server/protocol/ParseTimeoutUpdater;
}
SourceFile: "ParseTimeoutUpdater.java"
NestMembers:
  io.undertow.server.protocol.ParseTimeoutUpdater$1
InnerClasses:
  public abstract CloseListener = io.undertow.server.ServerConnection$CloseListener of io.undertow.server.ServerConnection
  io.undertow.server.protocol.ParseTimeoutUpdater$1
  public abstract Key = org.xnio.XnioExecutor$Key of org.xnio.XnioExecutor