class org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry implements org.glassfish.grizzly.WriteHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry
  super_class: java.lang.Object
{
  private final org.glassfish.grizzly.filterchain.FilterChainContext ctx;
    descriptor: Lorg/glassfish/grizzly/filterchain/FilterChainContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.nio.channels.FileChannel fc;
    descriptor: Ljava/nio/channels/FileChannel;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.io.FileInputStream fis;
    descriptor: Ljava/io/FileInputStream;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.glassfish.grizzly.http.HttpResponsePacket response;
    descriptor: Lorg/glassfish/grizzly/http/HttpResponsePacket;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.glassfish.grizzly.OutputSink output;
    descriptor: Lorg/glassfish/grizzly/OutputSink;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long remaining;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 230
            ldc Lorg/glassfish/grizzly/http/server/FileCacheFilter;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry create(org.glassfish.grizzly.filterchain.FilterChainContext, org.glassfish.grizzly.http.HttpResponsePacket, java.io.File, long);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;Lorg/glassfish/grizzly/http/HttpResponsePacket;Ljava/io/File;J)Lorg/glassfish/grizzly/http/server/FileCacheFilter$FileSendEntry;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=7, args_size=4
        start local 0 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        start local 1 // org.glassfish.grizzly.http.HttpResponsePacket response
        start local 2 // java.io.File file
        start local 3 // long size
         0: .line 243
            new java.io.FileInputStream
            dup
            aload 2 /* file */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 5 /* fis */
        start local 5 // java.io.FileInputStream fis
         1: .line 244
            aload 5 /* fis */
            invokevirtual java.io.FileInputStream.getChannel:()Ljava/nio/channels/FileChannel;
            astore 6 /* fc */
        start local 6 // java.nio.channels.FileChannel fc
         2: .line 246
            new org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry
            dup
            aload 0 /* ctx */
            aload 1 /* response */
            aload 5 /* fis */
            aload 6 /* fc */
            lload 3 /* size */
            invokespecial org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.<init>:(Lorg/glassfish/grizzly/filterchain/FilterChainContext;Lorg/glassfish/grizzly/http/HttpResponsePacket;Ljava/io/FileInputStream;Ljava/nio/channels/FileChannel;J)V
            areturn
        end local 6 // java.nio.channels.FileChannel fc
        end local 5 // java.io.FileInputStream fis
        end local 3 // long size
        end local 2 // java.io.File file
        end local 1 // org.glassfish.grizzly.http.HttpResponsePacket response
        end local 0 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0       ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            0    3     1  response  Lorg/glassfish/grizzly/http/HttpResponsePacket;
            0    3     2      file  Ljava/io/File;
            0    3     3      size  J
            1    3     5       fis  Ljava/io/FileInputStream;
            2    3     6        fc  Ljava/nio/channels/FileChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      ctx       final
      response  final
      file      final
      size      final

  public void <init>(org.glassfish.grizzly.filterchain.FilterChainContext, org.glassfish.grizzly.http.HttpResponsePacket, java.io.FileInputStream, java.nio.channels.FileChannel, long);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;Lorg/glassfish/grizzly/http/HttpResponsePacket;Ljava/io/FileInputStream;Ljava/nio/channels/FileChannel;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=6
        start local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        start local 2 // org.glassfish.grizzly.http.HttpResponsePacket response
        start local 3 // java.io.FileInputStream fis
        start local 4 // java.nio.channels.FileChannel fc
        start local 5 // long size
         0: .line 249
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 254
            aload 0 /* this */
            aload 1 /* ctx */
            putfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.ctx:Lorg/glassfish/grizzly/filterchain/FilterChainContext;
         2: .line 255
            aload 0 /* this */
            aload 2 /* response */
            putfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.response:Lorg/glassfish/grizzly/http/HttpResponsePacket;
         3: .line 256
            aload 0 /* this */
            aload 3 /* fis */
            putfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.fis:Ljava/io/FileInputStream;
         4: .line 257
            aload 0 /* this */
            aload 4 /* fc */
            putfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.fc:Ljava/nio/channels/FileChannel;
         5: .line 258
            aload 0 /* this */
            lload 5 /* size */
            putfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.remaining:J
         6: .line 260
            aload 2 /* response */
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.getProcessingState:()Lorg/glassfish/grizzly/http/ProcessingState;
            invokevirtual org.glassfish.grizzly.http.ProcessingState.getHttpContext:()Lorg/glassfish/grizzly/http/HttpContext;
            astore 7 /* httpContext */
        start local 7 // org.glassfish.grizzly.http.HttpContext httpContext
         7: .line 261
            getstatic org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.$assertionsDisabled:Z
            ifne 8
            aload 7 /* httpContext */
            ifnonnull 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 262
      StackMap locals: org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry org.glassfish.grizzly.filterchain.FilterChainContext org.glassfish.grizzly.http.HttpResponsePacket java.io.FileInputStream java.nio.channels.FileChannel long org.glassfish.grizzly.http.HttpContext
      StackMap stack:
            aload 0 /* this */
            aload 7 /* httpContext */
            invokevirtual org.glassfish.grizzly.http.HttpContext.getOutputSink:()Lorg/glassfish/grizzly/OutputSink;
            putfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.output:Lorg/glassfish/grizzly/OutputSink;
         9: .line 263
            return
        end local 7 // org.glassfish.grizzly.http.HttpContext httpContext
        end local 5 // long size
        end local 4 // java.nio.channels.FileChannel fc
        end local 3 // java.io.FileInputStream fis
        end local 2 // org.glassfish.grizzly.http.HttpResponsePacket response
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        end local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0         this  Lorg/glassfish/grizzly/http/server/FileCacheFilter$FileSendEntry;
            0   10     1          ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            0   10     2     response  Lorg/glassfish/grizzly/http/HttpResponsePacket;
            0   10     3          fis  Ljava/io/FileInputStream;
            0   10     4           fc  Ljava/nio/channels/FileChannel;
            0   10     5         size  J
            7   10     7  httpContext  Lorg/glassfish/grizzly/http/HttpContext;
    MethodParameters:
          Name  Flags
      ctx       final
      response  final
      fis       final
      fc        final
      size      final

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
         0: .line 268
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.fis:Ljava/io/FileInputStream;
            invokevirtual java.io.FileInputStream.close:()V
         1: .line 269
            goto 3
      StackMap locals:
      StackMap stack: java.io.IOException
         2: pop
         3: .line 271
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/glassfish/grizzly/http/server/FileCacheFilter$FileSendEntry;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException

  private void send();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
         0: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.ctx:Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getMemoryManager:()Lorg/glassfish/grizzly/memory/MemoryManager;
            sipush 8192
            invokeinterface org.glassfish.grizzly.memory.MemoryManager.allocate:(I)Lorg/glassfish/grizzly/Buffer;
            astore 2 /* buffer */
        start local 2 // org.glassfish.grizzly.Buffer buffer
         1: .line 280
            aload 2 /* buffer */
            iconst_1
            invokeinterface org.glassfish.grizzly.Buffer.allowBufferDispose:(Z)V
         2: .line 282
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.fc:Ljava/nio/channels/FileChannel;
            aload 2 /* buffer */
            invokestatic org.glassfish.grizzly.memory.Buffers.readFromFileChannel:(Ljava/nio/channels/FileChannel;Lorg/glassfish/grizzly/Buffer;)J
            lstore 3 /* readNow */
        start local 3 // long readNow
         3: .line 283
            lload 3 /* readNow */
            lconst_0
            lcmp
            ifle 4
            aload 0 /* this */
            dup
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.remaining:J
            lload 3 /* readNow */
            lsub
            dup2_x1
            putfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.remaining:J
            lconst_0
            lcmp
            ifle 4
            iconst_0
            goto 5
      StackMap locals: org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry top org.glassfish.grizzly.Buffer long
      StackMap stack:
         4: iconst_1
      StackMap locals:
      StackMap stack: int
         5: istore 1 /* isLast */
        start local 1 // boolean isLast
         6: .line 285
            aload 2 /* buffer */
            invokeinterface org.glassfish.grizzly.Buffer.trim:()V
         7: .line 286
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.ctx:Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.response:Lorg/glassfish/grizzly/http/HttpResponsePacket;
            invokestatic org.glassfish.grizzly.http.HttpContent.builder:(Lorg/glassfish/grizzly/http/HttpHeader;)Lorg/glassfish/grizzly/http/HttpContent$Builder;
         8: .line 287
            aload 2 /* buffer */
            invokevirtual org.glassfish.grizzly.http.HttpContent$Builder.content:(Lorg/glassfish/grizzly/Buffer;)Lorg/glassfish/grizzly/http/HttpContent$Builder;
         9: .line 288
            iload 1 /* isLast */
            invokevirtual org.glassfish.grizzly.http.HttpContent$Builder.last:(Z)Lorg/glassfish/grizzly/http/HttpContent$Builder;
        10: .line 289
            invokevirtual org.glassfish.grizzly.http.HttpContent$Builder.build:()Lorg/glassfish/grizzly/http/HttpContent;
        11: .line 286
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.write:(Ljava/lang/Object;)V
        end local 3 // long readNow
        end local 2 // org.glassfish.grizzly.Buffer buffer
        12: .line 291
            iload 1 /* isLast */
            ifne 13
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.output:Lorg/glassfish/grizzly/OutputSink;
            invokeinterface org.glassfish.grizzly.OutputSink.canWrite:()Z
            ifne 0
        13: .line 293
      StackMap locals: org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry int
      StackMap stack:
            iload 1 /* isLast */
            ifeq 16
        14: .line 294
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.done:()V
        15: .line 295
            goto 20
        16: .line 296
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.output:Lorg/glassfish/grizzly/OutputSink;
            aload 0 /* this */
            invokeinterface org.glassfish.grizzly.OutputSink.notifyCanWrite:(Lorg/glassfish/grizzly/WriteHandler;)V
        end local 1 // boolean isLast
        17: .line 298
            goto 20
      StackMap locals: org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry
      StackMap stack: java.io.IOException
        18: pop
        19: .line 299
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.done:()V
        20: .line 301
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   21     0     this  Lorg/glassfish/grizzly/http/server/FileCacheFilter$FileSendEntry;
            6   17     1   isLast  Z
            1   12     2   buffer  Lorg/glassfish/grizzly/Buffer;
            3   12     3  readNow  J
      Exception table:
        from    to  target  type
           0    17      18  Class java.io.IOException

  private void done();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
         0: .line 304
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.close:()V
         1: .line 305
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.ctx:Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.ctx:Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getStopAction:()Lorg/glassfish/grizzly/filterchain/NextAction;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.resume:(Lorg/glassfish/grizzly/filterchain/NextAction;)V
         2: .line 306
            return
        end local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/glassfish/grizzly/http/server/FileCacheFilter$FileSendEntry;

  public void onWritePossible();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
         0: .line 311
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.send:()V
         1: .line 312
            return
        end local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/http/server/FileCacheFilter$FileSendEntry;
    Exceptions:
      throws java.lang.Exception

  public void onError(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
        start local 1 // java.lang.Throwable t
         0: .line 316
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry.done:()V
         1: .line 317
            return
        end local 1 // java.lang.Throwable t
        end local 0 // org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/http/server/FileCacheFilter$FileSendEntry;
            0    2     1     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     
}
SourceFile: "FileCacheFilter.java"
NestHost: org.glassfish.grizzly.http.server.FileCacheFilter
InnerClasses:
  public Builder = org.glassfish.grizzly.http.HttpContent$Builder of org.glassfish.grizzly.http.HttpContent
  private FileSendEntry = org.glassfish.grizzly.http.server.FileCacheFilter$FileSendEntry of org.glassfish.grizzly.http.server.FileCacheFilter