final class jdk.management.jfr.StreamManager
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.management.jfr.StreamManager
  super_class: java.lang.Object
{
  public static final long TIME_OUT;
    descriptor: J
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final int DEFAULT_BLOCK_SIZE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 50000

  private static long idCounter;
    descriptor: J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private final java.util.Map<java.lang.Long, jdk.management.jfr.Stream> streams;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Long;Ljdk/management/jfr/Stream;>;

  private java.util.Timer timer;
    descriptor: Ljava/util/Timer;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 38
            getstatic java.util.concurrent.TimeUnit.MINUTES:Ljava/util/concurrent/TimeUnit;
            ldc 2
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            putstatic jdk.management.jfr.StreamManager.TIME_OUT:J
         1: .line 41
            lconst_0
            putstatic jdk.management.jfr.StreamManager.idCounter:J
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.management.jfr.StreamManager this
         0: .line 36
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield jdk.management.jfr.StreamManager.streams:Ljava/util/Map;
         2: .line 36
            return
        end local 0 // jdk.management.jfr.StreamManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/management/jfr/StreamManager;

  public synchronized jdk.management.jfr.Stream getStream(long);
    descriptor: (J)Ljdk/management/jfr/Stream;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // jdk.management.jfr.StreamManager this
        start local 1 // long streamIdentifer
         0: .line 47
            aload 0 /* this */
            getfield jdk.management.jfr.StreamManager.streams:Ljava/util/Map;
            lload 1 /* streamIdentifer */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.management.jfr.Stream
            astore 3 /* stream */
        start local 3 // jdk.management.jfr.Stream stream
         1: .line 48
            aload 3 /* stream */
            ifnonnull 3
         2: .line 49
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown stream identifier "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 1 /* streamIdentifer */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 51
      StackMap locals: jdk.management.jfr.Stream
      StackMap stack:
            aload 3 /* stream */
            areturn
        end local 3 // jdk.management.jfr.Stream stream
        end local 1 // long streamIdentifer
        end local 0 // jdk.management.jfr.StreamManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Ljdk/management/jfr/StreamManager;
            0    4     1  streamIdentifer  J
            1    4     3           stream  Ljdk/management/jfr/Stream;
    MethodParameters:
                 Name  Flags
      streamIdentifer  

  public synchronized jdk.management.jfr.Stream create(java.io.InputStream, int);
    descriptor: (Ljava/io/InputStream;I)Ljdk/management/jfr/Stream;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // jdk.management.jfr.StreamManager this
        start local 1 // java.io.InputStream is
        start local 2 // int blockSize
         0: .line 55
            getstatic jdk.management.jfr.StreamManager.idCounter:J
            lconst_1
            ladd
            putstatic jdk.management.jfr.StreamManager.idCounter:J
         1: .line 56
            new jdk.management.jfr.Stream
            dup
            aload 1 /* is */
            getstatic jdk.management.jfr.StreamManager.idCounter:J
            iload 2 /* blockSize */
            invokespecial jdk.management.jfr.Stream.<init>:(Ljava/io/InputStream;JI)V
            astore 3 /* stream */
        start local 3 // jdk.management.jfr.Stream stream
         2: .line 57
            aload 0 /* this */
            getfield jdk.management.jfr.StreamManager.streams:Ljava/util/Map;
            aload 3 /* stream */
            invokevirtual jdk.management.jfr.Stream.getId:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 3 /* stream */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 59
            aload 0 /* this */
            aload 3 /* stream */
            invokestatic java.lang.System.currentTimeMillis:()J
            getstatic jdk.management.jfr.StreamManager.TIME_OUT:J
            ladd
            invokevirtual jdk.management.jfr.StreamManager.scheduleAbort:(Ljdk/management/jfr/Stream;J)V
         4: .line 60
            aload 3 /* stream */
            areturn
        end local 3 // jdk.management.jfr.Stream stream
        end local 2 // int blockSize
        end local 1 // java.io.InputStream is
        end local 0 // jdk.management.jfr.StreamManager this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Ljdk/management/jfr/StreamManager;
            0    5     1         is  Ljava/io/InputStream;
            0    5     2  blockSize  I
            2    5     3     stream  Ljdk/management/jfr/Stream;
    MethodParameters:
           Name  Flags
      is         
      blockSize  

  public synchronized void destroy(jdk.management.jfr.Stream);
    descriptor: (Ljdk/management/jfr/Stream;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.management.jfr.StreamManager this
        start local 1 // jdk.management.jfr.Stream stream
         0: .line 65
            aload 1 /* stream */
            invokevirtual jdk.management.jfr.Stream.close:()V
         1: .line 66
            goto 3
      StackMap locals:
      StackMap stack: java.io.IOException
         2: pop
         3: .line 69
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.management.jfr.StreamManager.streams:Ljava/util/Map;
            aload 1 /* stream */
            invokevirtual jdk.management.jfr.Stream.getId:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 70
            aload 0 /* this */
            getfield jdk.management.jfr.StreamManager.streams:Ljava/util/Map;
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 7
         5: .line 71
            aload 0 /* this */
            getfield jdk.management.jfr.StreamManager.timer:Ljava/util/Timer;
            invokevirtual java.util.Timer.cancel:()V
         6: .line 72
            aload 0 /* this */
            aconst_null
            putfield jdk.management.jfr.StreamManager.timer:Ljava/util/Timer;
         7: .line 74
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.management.jfr.Stream stream
        end local 0 // jdk.management.jfr.StreamManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Ljdk/management/jfr/StreamManager;
            0    8     1  stream  Ljdk/management/jfr/Stream;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  public synchronized void scheduleAbort(jdk.management.jfr.Stream, long);
    descriptor: (Ljdk/management/jfr/Stream;J)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=8, locals=4, args_size=3
        start local 0 // jdk.management.jfr.StreamManager this
        start local 1 // jdk.management.jfr.Stream s
        start local 2 // long when
         0: .line 77
            aload 0 /* this */
            getfield jdk.management.jfr.StreamManager.timer:Ljava/util/Timer;
            ifnonnull 2
         1: .line 78
            aload 0 /* this */
            new java.util.Timer
            dup
            iconst_1
            invokespecial java.util.Timer.<init>:(Z)V
            putfield jdk.management.jfr.StreamManager.timer:Ljava/util/Timer;
         2: .line 80
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.management.jfr.StreamManager.timer:Ljava/util/Timer;
            new jdk.management.jfr.StreamCleanupTask
            dup
            aload 0 /* this */
            aload 1 /* s */
            invokespecial jdk.management.jfr.StreamCleanupTask.<init>:(Ljdk/management/jfr/StreamManager;Ljdk/management/jfr/Stream;)V
            new java.util.Date
            dup
            lload 2 /* when */
            getstatic jdk.management.jfr.StreamManager.TIME_OUT:J
            ladd
            invokespecial java.util.Date.<init>:(J)V
            invokevirtual java.util.Timer.schedule:(Ljava/util/TimerTask;Ljava/util/Date;)V
         3: .line 81
            return
        end local 2 // long when
        end local 1 // jdk.management.jfr.Stream s
        end local 0 // jdk.management.jfr.StreamManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/management/jfr/StreamManager;
            0    4     1     s  Ljdk/management/jfr/Stream;
            0    4     2  when  J
    MethodParameters:
      Name  Flags
      s     
      when  
}
SourceFile: "StreamManager.java"