public class io.undertow.conduits.RateLimitingStreamSinkConduit extends org.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.undertow.conduits.RateLimitingStreamSinkConduit
super_class: org.xnio.conduits.AbstractStreamSinkConduit
{
private final long time;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int bytes;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean writesResumed;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int byteCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private long startTime;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long nextSendTime;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean scheduled;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
public void <init>(org.xnio.conduits.StreamSinkConduit, int, long, java.util.concurrent.TimeUnit);
descriptor: (Lorg/xnio/conduits/StreamSinkConduit;IJLjava/util/concurrent/TimeUnit;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 5 0: aload 0
aload 1
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.<init>:(Lorg/xnio/conduits/StreamSinkConduit;)V
1: aload 0
iconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.writesResumed:Z
2: aload 0
iconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
3: aload 0
lconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.startTime:J
4: aload 0
lconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.nextSendTime:J
5: aload 0
iconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.scheduled:Z
6: aload 0
aload 1
invokeinterface org.xnio.conduits.StreamSinkConduit.isWriteResumed:()Z
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.writesResumed:Z
7: aload 0
aload 5
lload 3
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.time:J
8: aload 0
iload 2
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
9: return
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 10 1 next Lorg/xnio/conduits/StreamSinkConduit;
0 10 2 bytes I
0 10 3 time J
0 10 5 timeUnit Ljava/util/concurrent/TimeUnit;
MethodParameters:
Name Flags
next
bytes
time
timeUnit
public int write(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.canSend:()Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
isub
istore 2
start local 2 3: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 3
start local 3 4: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
iload 2
if_icmple 6
5: aload 1
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
iload 2
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
6: StackMap locals: int int
StackMap stack:
aload 0
aload 1
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.write:(Ljava/nio/ByteBuffer;)I
istore 4
start local 4 7: aload 0
iload 4
i2l
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.handleWritten:(J)V
8: iload 4
istore 6
9: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
10: iload 6
ireturn
end local 4 11: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
12: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
13: aload 5
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 14 1 src Ljava/nio/ByteBuffer;
3 14 2 bytes I
4 14 3 old I
7 11 4 written I
Exception table:
from to target type
6 9 11 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
src
public long transferFrom(java.nio.channels.FileChannel, long, long);
descriptor: (Ljava/nio/channels/FileChannel;JJ)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.canSend:()Z
ifne 2
1: lconst_0
lreturn
2: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
isub
istore 6
start local 6 3: aload 0
aload 1
lload 2
lload 4
iload 6
i2l
invokestatic java.lang.Math.min:(JJ)J
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.transferFrom:(Ljava/nio/channels/FileChannel;JJ)J
lstore 7
start local 7 4: aload 0
lload 7
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.handleWritten:(J)V
5: lload 7
lreturn
end local 7 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 6 1 src Ljava/nio/channels/FileChannel;
0 6 2 position J
0 6 4 count J
3 6 6 bytes I
4 6 7 written J
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
src
position
count
public long transferFrom(org.xnio.channels.StreamSourceChannel, long, java.nio.ByteBuffer);
descriptor: (Lorg/xnio/channels/StreamSourceChannel;JLjava/nio/ByteBuffer;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.canSend:()Z
ifne 2
1: lconst_0
lreturn
2: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
isub
istore 5
start local 5 3: aload 0
aload 1
lload 2
iload 5
i2l
invokestatic java.lang.Math.min:(JJ)J
aload 4
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.transferFrom:(Lorg/xnio/channels/StreamSourceChannel;JLjava/nio/ByteBuffer;)J
lstore 6
start local 6 4: aload 0
lload 6
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.handleWritten:(J)V
5: lload 6
lreturn
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 6 1 source Lorg/xnio/channels/StreamSourceChannel;
0 6 2 count J
0 6 4 throughBuffer Ljava/nio/ByteBuffer;
3 6 5 bytes I
4 6 6 written J
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
source
count
throughBuffer
public long write(java.nio.ByteBuffer[], int, int);
descriptor: ([Ljava/nio/ByteBuffer;II)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=14, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.canSend:()Z
ifne 2
1: lconst_0
lreturn
2: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 3: iconst_m1
istore 5
start local 5 4: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
isub
i2l
lstore 6
start local 6 5: iload 2
istore 8
start local 8 6: goto 15
7: StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit java.nio.ByteBuffer[] int int int int long int
StackMap stack:
aload 1
iload 8
aaload
astore 9
start local 9 8: lload 6
aload 9
invokevirtual java.nio.ByteBuffer.remaining:()I
i2l
lsub
lstore 6
9: lload 6
lconst_0
lcmp
ifge 14
10: iload 8
istore 5
11: aload 9
invokevirtual java.nio.ByteBuffer.limit:()I
istore 4
12: aload 9
aload 9
invokevirtual java.nio.ByteBuffer.limit:()I
i2l
lload 6
ladd
l2i
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
13: goto 16
end local 9 14: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
15: iload 8
iload 2
iload 3
iadd
if_icmplt 7
end local 8 16: StackMap locals:
StackMap stack:
iload 5
iconst_m1
if_icmpne 19
17: aload 0
aload 1
iload 2
iload 3
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.write:([Ljava/nio/ByteBuffer;II)J
lstore 8
start local 8 18: goto 20
end local 8 19: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
iload 5
iload 2
isub
iconst_1
iadd
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.write:([Ljava/nio/ByteBuffer;II)J
lstore 8
start local 8 20: StackMap locals: long
StackMap stack:
aload 0
lload 8
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.handleWritten:(J)V
21: lload 8
lstore 11
22: iload 5
iconst_m1
if_icmpeq 25
23: aload 1
iload 5
aaload
astore 13
start local 13 24: aload 13
iload 4
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
end local 13 25: StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit java.nio.ByteBuffer[] int int int int long long top long
StackMap stack:
lload 11
lreturn
end local 8 26: StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit java.nio.ByteBuffer[] int int int int long
StackMap stack: java.lang.Throwable
astore 10
27: iload 5
iconst_m1
if_icmpeq 30
28: aload 1
iload 5
aaload
astore 13
start local 13 29: aload 13
iload 4
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
end local 13 30: StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit java.nio.ByteBuffer[] int int int int long top top java.lang.Throwable
StackMap stack:
aload 10
athrow
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 31 1 srcs [Ljava/nio/ByteBuffer;
0 31 2 offs I
0 31 3 len I
3 31 4 old I
4 31 5 adjPos I
5 31 6 rem J
6 16 8 i I
8 14 9 buf Ljava/nio/ByteBuffer;
18 19 8 written J
20 26 8 written J
24 25 13 buf Ljava/nio/ByteBuffer;
29 30 13 buf Ljava/nio/ByteBuffer;
Exception table:
from to target type
16 22 26 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
srcs
offs
len
public int writeFinal(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.canSend:()Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
isub
istore 2
start local 2 3: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 3
start local 3 4: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
iload 2
if_icmple 6
5: aload 1
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
iload 2
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
6: StackMap locals: int int
StackMap stack:
aload 0
aload 1
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.writeFinal:(Ljava/nio/ByteBuffer;)I
istore 4
start local 4 7: aload 0
iload 4
i2l
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.handleWritten:(J)V
8: iload 4
istore 6
9: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
10: iload 6
ireturn
end local 4 11: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
12: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
13: aload 5
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 14 1 src Ljava/nio/ByteBuffer;
3 14 2 bytes I
4 14 3 old I
7 11 4 written I
Exception table:
from to target type
6 9 11 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
src
public long writeFinal(java.nio.ByteBuffer[], int, int);
descriptor: ([Ljava/nio/ByteBuffer;II)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=14, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.canSend:()Z
ifne 2
1: lconst_0
lreturn
2: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 3: iconst_m1
istore 5
start local 5 4: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
isub
i2l
lstore 6
start local 6 5: iload 2
istore 8
start local 8 6: goto 15
7: StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit java.nio.ByteBuffer[] int int int int long int
StackMap stack:
aload 1
iload 8
aaload
astore 9
start local 9 8: lload 6
aload 9
invokevirtual java.nio.ByteBuffer.remaining:()I
i2l
lsub
lstore 6
9: lload 6
lconst_0
lcmp
ifge 14
10: iload 8
istore 5
11: aload 9
invokevirtual java.nio.ByteBuffer.limit:()I
istore 4
12: aload 9
aload 9
invokevirtual java.nio.ByteBuffer.limit:()I
i2l
lload 6
ladd
l2i
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
13: goto 16
end local 9 14: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
15: iload 8
iload 2
iload 3
iadd
if_icmplt 7
end local 8 16: StackMap locals:
StackMap stack:
iload 5
iconst_m1
if_icmpne 19
17: aload 0
aload 1
iload 2
iload 3
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.writeFinal:([Ljava/nio/ByteBuffer;II)J
lstore 8
start local 8 18: goto 20
end local 8 19: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
iload 5
iload 2
isub
iconst_1
iadd
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.writeFinal:([Ljava/nio/ByteBuffer;II)J
lstore 8
start local 8 20: StackMap locals: long
StackMap stack:
aload 0
lload 8
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.handleWritten:(J)V
21: lload 8
lstore 11
22: iload 5
iconst_m1
if_icmpeq 25
23: aload 1
iload 5
aaload
astore 13
start local 13 24: aload 13
iload 4
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
end local 13 25: StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit java.nio.ByteBuffer[] int int int int long long top long
StackMap stack:
lload 11
lreturn
end local 8 26: StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit java.nio.ByteBuffer[] int int int int long
StackMap stack: java.lang.Throwable
astore 10
27: iload 5
iconst_m1
if_icmpeq 30
28: aload 1
iload 5
aaload
astore 13
start local 13 29: aload 13
iload 4
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
end local 13 30: StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit java.nio.ByteBuffer[] int int int int long top top java.lang.Throwable
StackMap stack:
aload 10
athrow
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 31 1 srcs [Ljava/nio/ByteBuffer;
0 31 2 offs I
0 31 3 len I
3 31 4 old I
4 31 5 adjPos I
5 31 6 rem J
6 16 8 i I
8 14 9 buf Ljava/nio/ByteBuffer;
18 19 8 written J
20 26 8 written J
24 25 13 buf Ljava/nio/ByteBuffer;
29 30 13 buf Ljava/nio/ByteBuffer;
Exception table:
from to target type
16 22 26 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
srcs
offs
len
public void resumeWrites();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.writesResumed:Z
1: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.canSend:()Z
ifeq 3
2: aload 0
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.resumeWrites:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
public void suspendWrites();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.writesResumed:Z
1: aload 0
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.suspendWrites:()V
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
public void wakeupWrites();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.writesResumed:Z
1: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.canSend:()Z
ifeq 3
2: aload 0
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.wakeupWrites:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
public boolean isWriteResumed();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.writesResumed:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
public void awaitWritable();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.nextSendTime:J
invokestatic java.lang.System.currentTimeMillis:()J
lsub
lstore 1
start local 1 1: lload 1
lconst_0
lcmp
ifle 7
2: lload 1
invokestatic java.lang.Thread.sleep:(J)V
3: goto 7
StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit long
StackMap stack: java.lang.InterruptedException
4: pop
5: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
6: new java.io.InterruptedIOException
dup
invokespecial java.io.InterruptedIOException.<init>:()V
athrow
7: StackMap locals:
StackMap stack:
aload 0
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.awaitWritable:()V
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
1 9 1 toGo J
Exception table:
from to target type
2 3 4 Class java.lang.InterruptedException
Exceptions:
throws java.io.IOException
public void awaitWritable(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 3 0: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.nextSendTime:J
invokestatic java.lang.System.currentTimeMillis:()J
lsub
lstore 4
start local 4 1: lload 4
lconst_0
lcmp
ifle 8
2: lload 4
aload 3
lload 1
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
invokestatic java.lang.Math.min:(JJ)J
invokestatic java.lang.Thread.sleep:(J)V
3: goto 7
StackMap locals: io.undertow.conduits.RateLimitingStreamSinkConduit long java.util.concurrent.TimeUnit long
StackMap stack: java.lang.InterruptedException
4: pop
5: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
6: new java.io.InterruptedIOException
dup
invokespecial java.io.InterruptedIOException.<init>:()V
athrow
7: StackMap locals:
StackMap stack:
return
8: StackMap locals:
StackMap stack:
aload 0
lload 1
aload 3
invokespecial org.xnio.conduits.AbstractStreamSinkConduit.awaitWritable:(JLjava/util/concurrent/TimeUnit;)V
9: return
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 10 1 time J
0 10 3 timeUnit Ljava/util/concurrent/TimeUnit;
1 10 4 toGo J
Exception table:
from to target type
2 3 4 Class java.lang.InterruptedException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
time
timeUnit
private boolean canSend();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
if_icmpge 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.nextSendTime:J
lcmp
ifle 7
3: aload 0
iconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
4: aload 0
lconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.startTime:J
5: aload 0
lconst_0
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.nextSendTime:J
6: iconst_1
ireturn
7: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.writesResumed:Z
ifeq 9
8: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.handleWritesResumedWhenBlocked:()V
9: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
private void handleWritten(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: lload 1
lconst_0
lcmp
ifne 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
dup
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
i2l
lload 1
ladd
l2i
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
3: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.byteCount:I
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.bytes:I
if_icmpge 8
4: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.startTime:J
lconst_0
lcmp
ifne 13
5: aload 0
invokestatic java.lang.System.currentTimeMillis:()J
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.startTime:J
6: aload 0
invokestatic java.lang.System.currentTimeMillis:()J
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.time:J
ladd
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.nextSendTime:J
7: goto 13
8: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.startTime:J
lconst_0
lcmp
ifne 10
9: aload 0
invokestatic java.lang.System.currentTimeMillis:()J
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.startTime:J
10: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.startTime:J
aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.time:J
ladd
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.nextSendTime:J
11: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.writesResumed:Z
ifeq 13
12: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.handleWritesResumedWhenBlocked:()V
13: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
0 14 1 written J
MethodParameters:
Name Flags
written
private void handleWritesResumedWhenBlocked();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=1
start local 0 0: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.scheduled:Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield io.undertow.conduits.RateLimitingStreamSinkConduit.scheduled:Z
3: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.next:Lorg/xnio/conduits/Conduit;
checkcast org.xnio.conduits.StreamSinkConduit
invokeinterface org.xnio.conduits.StreamSinkConduit.suspendWrites:()V
4: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.nextSendTime:J
invokestatic java.lang.System.currentTimeMillis:()J
lsub
lstore 1
start local 1 5: aload 0
invokevirtual io.undertow.conduits.RateLimitingStreamSinkConduit.getWriteThread:()Lorg/xnio/XnioIoThread;
new io.undertow.conduits.RateLimitingStreamSinkConduit$1
dup
aload 0
invokespecial io.undertow.conduits.RateLimitingStreamSinkConduit$1.<init>:(Lio/undertow/conduits/RateLimitingStreamSinkConduit;)V
6: lload 1
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
7: invokestatic io.undertow.util.WorkerUtils.executeAfter:(Lorg/xnio/XnioIoThread;Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
pop
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lio/undertow/conduits/RateLimitingStreamSinkConduit;
5 9 1 millis J
static org.xnio.conduits.Conduit access$0(io.undertow.conduits.RateLimitingStreamSinkConduit);
descriptor: (Lio/undertow/conduits/RateLimitingStreamSinkConduit;)Lorg/xnio/conduits/Conduit;
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
getfield io.undertow.conduits.RateLimitingStreamSinkConduit.next:Lorg/xnio/conduits/Conduit;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Lorg/xnio/conduits/AbstractStreamSinkConduit<Lorg/xnio/conduits/StreamSinkConduit;>;
SourceFile: "RateLimitingStreamSinkConduit.java"
NestMembers:
io.undertow.conduits.RateLimitingStreamSinkConduit$1
InnerClasses:
io.undertow.conduits.RateLimitingStreamSinkConduit$1
public abstract Key = org.xnio.XnioExecutor$Key of org.xnio.XnioExecutor