public class org.apache.http.impl.client.AIMDBackoffManager implements org.apache.http.client.BackoffManager
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.http.impl.client.AIMDBackoffManager
  super_class: java.lang.Object
{
  private final org.apache.http.pool.ConnPoolControl<org.apache.http.conn.routing.HttpRoute> connPerRoute;
    descriptor: Lorg/apache/http/pool/ConnPoolControl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/apache/http/pool/ConnPoolControl<Lorg/apache/http/conn/routing/HttpRoute;>;

  private final org.apache.http.impl.client.Clock clock;
    descriptor: Lorg/apache/http/impl/client/Clock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<org.apache.http.conn.routing.HttpRoute, java.lang.Long> lastRouteProbes;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Long;>;

  private final java.util.Map<org.apache.http.conn.routing.HttpRoute, java.lang.Long> lastRouteBackoffs;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Long;>;

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

  private double backoffFactor;
    descriptor: D
    flags: (0x0002) ACC_PRIVATE

  private int cap;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.apache.http.pool.ConnPoolControl<org.apache.http.conn.routing.HttpRoute>);
    descriptor: (Lorg/apache/http/pool/ConnPoolControl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // org.apache.http.pool.ConnPoolControl connPerRoute
         0: .line 75
            aload 0 /* this */
            aload 1 /* connPerRoute */
            new org.apache.http.impl.client.SystemClock
            dup
            invokespecial org.apache.http.impl.client.SystemClock.<init>:()V
            invokespecial org.apache.http.impl.client.AIMDBackoffManager.<init>:(Lorg/apache/http/pool/ConnPoolControl;Lorg/apache/http/impl/client/Clock;)V
         1: .line 76
            return
        end local 1 // org.apache.http.pool.ConnPoolControl connPerRoute
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0    2     1  connPerRoute  Lorg/apache/http/pool/ConnPoolControl<Lorg/apache/http/conn/routing/HttpRoute;>;
    Signature: (Lorg/apache/http/pool/ConnPoolControl<Lorg/apache/http/conn/routing/HttpRoute;>;)V
    MethodParameters:
              Name  Flags
      connPerRoute  final

  void <init>(org.apache.http.pool.ConnPoolControl<org.apache.http.conn.routing.HttpRoute>, org.apache.http.impl.client.Clock);
    descriptor: (Lorg/apache/http/pool/ConnPoolControl;Lorg/apache/http/impl/client/Clock;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // org.apache.http.pool.ConnPoolControl connPerRoute
        start local 2 // org.apache.http.impl.client.Clock clock
         0: .line 78
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 0 /* this */
            ldc 5000
            putfield org.apache.http.impl.client.AIMDBackoffManager.coolDown:J
         2: .line 64
            aload 0 /* this */
            ldc 0.5
            putfield org.apache.http.impl.client.AIMDBackoffManager.backoffFactor:D
         3: .line 65
            aload 0 /* this */
            iconst_2
            putfield org.apache.http.impl.client.AIMDBackoffManager.cap:I
         4: .line 79
            aload 0 /* this */
            aload 2 /* clock */
            putfield org.apache.http.impl.client.AIMDBackoffManager.clock:Lorg/apache/http/impl/client/Clock;
         5: .line 80
            aload 0 /* this */
            aload 1 /* connPerRoute */
            putfield org.apache.http.impl.client.AIMDBackoffManager.connPerRoute:Lorg/apache/http/pool/ConnPoolControl;
         6: .line 81
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.apache.http.impl.client.AIMDBackoffManager.lastRouteProbes:Ljava/util/Map;
         7: .line 82
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.apache.http.impl.client.AIMDBackoffManager.lastRouteBackoffs:Ljava/util/Map;
         8: .line 83
            return
        end local 2 // org.apache.http.impl.client.Clock clock
        end local 1 // org.apache.http.pool.ConnPoolControl connPerRoute
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0    9     1  connPerRoute  Lorg/apache/http/pool/ConnPoolControl<Lorg/apache/http/conn/routing/HttpRoute;>;
            0    9     2         clock  Lorg/apache/http/impl/client/Clock;
    Signature: (Lorg/apache/http/pool/ConnPoolControl<Lorg/apache/http/conn/routing/HttpRoute;>;Lorg/apache/http/impl/client/Clock;)V
    MethodParameters:
              Name  Flags
      connPerRoute  final
      clock         final

  public void backOff(org.apache.http.conn.routing.HttpRoute);
    descriptor: (Lorg/apache/http/conn/routing/HttpRoute;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // org.apache.http.conn.routing.HttpRoute route
         0: .line 87
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.connPerRoute:Lorg/apache/http/pool/ConnPoolControl;
            dup
            astore 2
            monitorenter
         1: .line 88
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.connPerRoute:Lorg/apache/http/pool/ConnPoolControl;
            aload 1 /* route */
            invokeinterface org.apache.http.pool.ConnPoolControl.getMaxPerRoute:(Ljava/lang/Object;)I
            istore 3 /* curr */
        start local 3 // int curr
         2: .line 89
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.lastRouteBackoffs:Ljava/util/Map;
            aload 1 /* route */
            invokevirtual org.apache.http.impl.client.AIMDBackoffManager.getLastUpdate:(Ljava/util/Map;Lorg/apache/http/conn/routing/HttpRoute;)Ljava/lang/Long;
            astore 4 /* lastUpdate */
        start local 4 // java.lang.Long lastUpdate
         3: .line 90
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.clock:Lorg/apache/http/impl/client/Clock;
            invokeinterface org.apache.http.impl.client.Clock.getCurrentTime:()J
            lstore 5 /* now */
        start local 5 // long now
         4: .line 91
            lload 5 /* now */
            aload 4 /* lastUpdate */
            invokevirtual java.lang.Long.longValue:()J
            lsub
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.coolDown:J
            lcmp
            ifge 7
         5: .line 92
            aload 2
            monitorexit
         6: return
         7: .line 94
      StackMap locals: org.apache.http.impl.client.AIMDBackoffManager org.apache.http.conn.routing.HttpRoute org.apache.http.pool.ConnPoolControl int java.lang.Long long
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.connPerRoute:Lorg/apache/http/pool/ConnPoolControl;
            aload 1 /* route */
            aload 0 /* this */
            iload 3 /* curr */
            invokevirtual org.apache.http.impl.client.AIMDBackoffManager.getBackedOffPoolSize:(I)I
            invokeinterface org.apache.http.pool.ConnPoolControl.setMaxPerRoute:(Ljava/lang/Object;I)V
         8: .line 95
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.lastRouteBackoffs:Ljava/util/Map;
            aload 1 /* route */
            lload 5 /* now */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // long now
        end local 4 // java.lang.Long lastUpdate
        end local 3 // int curr
         9: .line 87
            aload 2
            monitorexit
        10: goto 13
      StackMap locals: org.apache.http.impl.client.AIMDBackoffManager org.apache.http.conn.routing.HttpRoute org.apache.http.pool.ConnPoolControl
      StackMap stack: java.lang.Throwable
        11: aload 2
            monitorexit
        12: athrow
        13: .line 97
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.apache.http.conn.routing.HttpRoute route
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0   14     1       route  Lorg/apache/http/conn/routing/HttpRoute;
            2    9     3        curr  I
            3    9     4  lastUpdate  Ljava/lang/Long;
            4    9     5         now  J
      Exception table:
        from    to  target  type
           1     6      11  any
           7    10      11  any
          11    12      11  any
    MethodParameters:
       Name  Flags
      route  final

  private int getBackedOffPoolSize(int);
    descriptor: (I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // int curr
         0: .line 100
            iload 1 /* curr */
            iconst_1
            if_icmpgt 2
         1: .line 101
            iconst_1
            ireturn
         2: .line 103
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.backoffFactor:D
            iload 1 /* curr */
            i2d
            dmul
            invokestatic java.lang.Math.floor:(D)D
            d2i
            ireturn
        end local 1 // int curr
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0    3     1  curr  I
    MethodParameters:
      Name  Flags
      curr  final

  public void probe(org.apache.http.conn.routing.HttpRoute);
    descriptor: (Lorg/apache/http/conn/routing/HttpRoute;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // org.apache.http.conn.routing.HttpRoute route
         0: .line 108
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.connPerRoute:Lorg/apache/http/pool/ConnPoolControl;
            dup
            astore 2
            monitorenter
         1: .line 109
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.connPerRoute:Lorg/apache/http/pool/ConnPoolControl;
            aload 1 /* route */
            invokeinterface org.apache.http.pool.ConnPoolControl.getMaxPerRoute:(Ljava/lang/Object;)I
            istore 3 /* curr */
        start local 3 // int curr
         2: .line 110
            iload 3 /* curr */
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.cap:I
            if_icmplt 3
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.cap:I
            goto 4
      StackMap locals: org.apache.http.pool.ConnPoolControl int
      StackMap stack:
         3: iload 3 /* curr */
            iconst_1
            iadd
      StackMap locals:
      StackMap stack: int
         4: istore 4 /* max */
        start local 4 // int max
         5: .line 111
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.lastRouteProbes:Ljava/util/Map;
            aload 1 /* route */
            invokevirtual org.apache.http.impl.client.AIMDBackoffManager.getLastUpdate:(Ljava/util/Map;Lorg/apache/http/conn/routing/HttpRoute;)Ljava/lang/Long;
            astore 5 /* lastProbe */
        start local 5 // java.lang.Long lastProbe
         6: .line 112
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.lastRouteBackoffs:Ljava/util/Map;
            aload 1 /* route */
            invokevirtual org.apache.http.impl.client.AIMDBackoffManager.getLastUpdate:(Ljava/util/Map;Lorg/apache/http/conn/routing/HttpRoute;)Ljava/lang/Long;
            astore 6 /* lastBackoff */
        start local 6 // java.lang.Long lastBackoff
         7: .line 113
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.clock:Lorg/apache/http/impl/client/Clock;
            invokeinterface org.apache.http.impl.client.Clock.getCurrentTime:()J
            lstore 7 /* now */
        start local 7 // long now
         8: .line 114
            lload 7 /* now */
            aload 5 /* lastProbe */
            invokevirtual java.lang.Long.longValue:()J
            lsub
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.coolDown:J
            lcmp
            iflt 9
            lload 7 /* now */
            aload 6 /* lastBackoff */
            invokevirtual java.lang.Long.longValue:()J
            lsub
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.coolDown:J
            lcmp
            ifge 11
         9: .line 115
      StackMap locals: org.apache.http.impl.client.AIMDBackoffManager org.apache.http.conn.routing.HttpRoute org.apache.http.pool.ConnPoolControl int int java.lang.Long java.lang.Long long
      StackMap stack:
            aload 2
            monitorexit
        10: return
        11: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.connPerRoute:Lorg/apache/http/pool/ConnPoolControl;
            aload 1 /* route */
            iload 4 /* max */
            invokeinterface org.apache.http.pool.ConnPoolControl.setMaxPerRoute:(Ljava/lang/Object;I)V
        12: .line 118
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.lastRouteProbes:Ljava/util/Map;
            aload 1 /* route */
            lload 7 /* now */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // long now
        end local 6 // java.lang.Long lastBackoff
        end local 5 // java.lang.Long lastProbe
        end local 4 // int max
        end local 3 // int curr
        13: .line 108
            aload 2
            monitorexit
        14: goto 17
      StackMap locals: org.apache.http.impl.client.AIMDBackoffManager org.apache.http.conn.routing.HttpRoute org.apache.http.pool.ConnPoolControl
      StackMap stack: java.lang.Throwable
        15: aload 2
            monitorexit
        16: athrow
        17: .line 120
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.apache.http.conn.routing.HttpRoute route
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   18     0         this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0   18     1        route  Lorg/apache/http/conn/routing/HttpRoute;
            2   13     3         curr  I
            5   13     4          max  I
            6   13     5    lastProbe  Ljava/lang/Long;
            7   13     6  lastBackoff  Ljava/lang/Long;
            8   13     7          now  J
      Exception table:
        from    to  target  type
           1    10      15  any
          11    14      15  any
          15    16      15  any
    MethodParameters:
       Name  Flags
      route  final

  private java.lang.Long getLastUpdate(java.util.Map<org.apache.http.conn.routing.HttpRoute, java.lang.Long>, org.apache.http.conn.routing.HttpRoute);
    descriptor: (Ljava/util/Map;Lorg/apache/http/conn/routing/HttpRoute;)Ljava/lang/Long;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // java.util.Map updates
        start local 2 // org.apache.http.conn.routing.HttpRoute route
         0: .line 123
            aload 1 /* updates */
            aload 2 /* route */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Long
            astore 3 /* lastUpdate */
        start local 3 // java.lang.Long lastUpdate
         1: .line 124
            aload 3 /* lastUpdate */
            ifnonnull 3
         2: .line 125
            lconst_0
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            astore 3 /* lastUpdate */
         3: .line 127
      StackMap locals: java.lang.Long
      StackMap stack:
            aload 3 /* lastUpdate */
            areturn
        end local 3 // java.lang.Long lastUpdate
        end local 2 // org.apache.http.conn.routing.HttpRoute route
        end local 1 // java.util.Map updates
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0    4     1     updates  Ljava/util/Map<Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Long;>;
            0    4     2       route  Lorg/apache/http/conn/routing/HttpRoute;
            1    4     3  lastUpdate  Ljava/lang/Long;
    Signature: (Ljava/util/Map<Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Long;>;Lorg/apache/http/conn/routing/HttpRoute;)Ljava/lang/Long;
    MethodParameters:
         Name  Flags
      updates  final
      route    final

  public void setBackoffFactor(double);
    descriptor: (D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // double d
         0: .line 140
            dload 1 /* d */
            dconst_0
            dcmpl
            ifle 1
            dload 1 /* d */
            dconst_1
            dcmpg
            ifge 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "Backoff factor must be 0.0 < f < 1.0"
            invokestatic org.apache.http.util.Args.check:(ZLjava/lang/String;)V
         3: .line 141
            aload 0 /* this */
            dload 1 /* d */
            putfield org.apache.http.impl.client.AIMDBackoffManager.backoffFactor:D
         4: .line 142
            return
        end local 1 // double d
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0    5     1     d  D
    MethodParameters:
      Name  Flags
      d     final

  public void setCooldownMillis(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // long l
         0: .line 152
            aload 0 /* this */
            getfield org.apache.http.impl.client.AIMDBackoffManager.coolDown:J
            ldc "Cool down"
            invokestatic org.apache.http.util.Args.positive:(JLjava/lang/String;)J
            pop2
         1: .line 153
            aload 0 /* this */
            lload 1 /* l */
            putfield org.apache.http.impl.client.AIMDBackoffManager.coolDown:J
         2: .line 154
            return
        end local 1 // long l
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0    3     1     l  J
    MethodParameters:
      Name  Flags
      l     final

  public void setPerHostConnectionCap(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.http.impl.client.AIMDBackoffManager this
        start local 1 // int cap
         0: .line 162
            iload 1 /* cap */
            ldc "Per host connection cap"
            invokestatic org.apache.http.util.Args.positive:(ILjava/lang/String;)I
            pop
         1: .line 163
            aload 0 /* this */
            iload 1 /* cap */
            putfield org.apache.http.impl.client.AIMDBackoffManager.cap:I
         2: .line 164
            return
        end local 1 // int cap
        end local 0 // org.apache.http.impl.client.AIMDBackoffManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/http/impl/client/AIMDBackoffManager;
            0    3     1   cap  I
    MethodParameters:
      Name  Flags
      cap   final
}
SourceFile: "AIMDBackoffManager.java"