public class io.undertow.io.AsyncSenderImpl implements io.undertow.io.Sender
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.undertow.io.AsyncSenderImpl
super_class: java.lang.Object
{
private org.xnio.channels.StreamSinkChannel channel;
descriptor: Lorg/xnio/channels/StreamSinkChannel;
flags: (0x0002) ACC_PRIVATE
private final io.undertow.server.HttpServerExchange exchange;
descriptor: Lio/undertow/server/HttpServerExchange;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private io.undertow.connector.PooledByteBuffer[] pooledBuffers;
descriptor: [Lio/undertow/connector/PooledByteBuffer;
flags: (0x0002) ACC_PRIVATE
private java.nio.channels.FileChannel fileChannel;
descriptor: Ljava/nio/channels/FileChannel;
flags: (0x0002) ACC_PRIVATE
private io.undertow.io.IoCallback callback;
descriptor: Lio/undertow/io/IoCallback;
flags: (0x0002) ACC_PRIVATE
private java.nio.ByteBuffer[] buffer;
descriptor: [Ljava/nio/ByteBuffer;
flags: (0x0002) ACC_PRIVATE
private volatile java.lang.Thread writeThread;
descriptor: Ljava/lang/Thread;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile java.lang.Thread inCallback;
descriptor: Ljava/lang/Thread;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private org.xnio.ChannelListener<org.xnio.channels.StreamSinkChannel> writeListener;
descriptor: Lorg/xnio/ChannelListener;
flags: (0x0002) ACC_PRIVATE
Signature: Lorg/xnio/ChannelListener<Lorg/xnio/channels/StreamSinkChannel;>;
private io.undertow.io.AsyncSenderImpl$TransferTask transferTask;
descriptor: Lio/undertow/io/AsyncSenderImpl$TransferTask;
flags: (0x0002) ACC_PRIVATE
public void <init>(io.undertow.server.HttpServerExchange);
descriptor: (Lio/undertow/server/HttpServerExchange;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
2: aload 0
aload 1
putfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/undertow/io/AsyncSenderImpl;
0 4 1 exchange Lio/undertow/server/HttpServerExchange;
MethodParameters:
Name Flags
exchange final
public void send(java.nio.ByteBuffer, io.undertow.io.IoCallback);
descriptor: (Ljava/nio/ByteBuffer;Lio/undertow/io/IoCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield io.undertow.io.AsyncSenderImpl.writeThread:Ljava/lang/Thread;
1: aload 2
ifnonnull 3
2: getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
ldc "callback"
invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
invokevirtual io.undertow.server.ServerConnection.isOpen:()Z
ifne 6
4: aload 0
aload 2
new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
5: return
6: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.isResponseComplete:()Z
ifeq 8
7: aload 0
aload 2
new java.io.IOException
dup
getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.responseComplete:()Ljava/lang/IllegalStateException;
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
8: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
ifnonnull 9
aload 0
getfield io.undertow.io.AsyncSenderImpl.fileChannel:Ljava/nio/channels/FileChannel;
ifnull 10
9: StackMap locals:
StackMap stack:
getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.dataAlreadyQueued:()Ljava/lang/IllegalStateException;
athrow
10: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseContentLength:()J
lstore 3
start local 3 11: lload 3
lconst_0
lcmp
ifle 14
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
i2l
lload 3
lcmp
ifle 14
12: aload 0
aload 2
getstatic io.undertow.UndertowLogger.ROOT_LOGGER:Lio/undertow/UndertowLogger;
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
i2l
lload 3
invokeinterface io.undertow.UndertowLogger.dataLargerThanContentLength:(JJ)Ljava/io/IOException;
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
13: return
14: StackMap locals: long
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.channel:Lorg/xnio/channels/StreamSinkChannel;
astore 5
start local 5 15: aload 5
ifnonnull 22
16: aload 2
getstatic io.undertow.io.IoCallback.END_EXCHANGE:Lio/undertow/io/IoCallback;
if_acmpne 19
17: lload 3
ldc -1
lcmp
ifne 19
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseHeaders:()Lio/undertow/util/HeaderMap;
getstatic io.undertow.util.Headers.TRANSFER_ENCODING:Lio/undertow/util/HttpString;
invokevirtual io.undertow.util.HeaderMap.contains:(Lio/undertow/util/HttpString;)Z
ifne 19
18: aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
i2l
invokevirtual io.undertow.server.HttpServerExchange.setResponseContentLength:(J)Lio/undertow/server/HttpServerExchange;
pop
19: StackMap locals: org.xnio.channels.StreamSinkChannel
StackMap stack:
aload 0
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseChannel:()Lorg/xnio/channels/StreamSinkChannel;
dup
astore 5
putfield io.undertow.io.AsyncSenderImpl.channel:Lorg/xnio/channels/StreamSinkChannel;
20: aload 5
ifnonnull 22
21: getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.responseChannelAlreadyProvided:()Ljava/lang/IllegalStateException;
athrow
22: StackMap locals:
StackMap stack:
aload 0
aload 2
putfield io.undertow.io.AsyncSenderImpl.callback:Lio/undertow/io/IoCallback;
23: aload 0
getfield io.undertow.io.AsyncSenderImpl.inCallback:Ljava/lang/Thread;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
if_acmpne 26
24: aload 0
iconst_1
anewarray java.nio.ByteBuffer
dup
iconst_0
aload 1
aastore
putfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
25: return
26: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
ifne 29
27: aload 2
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
aload 0
invokeinterface io.undertow.io.IoCallback.onComplete:(Lio/undertow/server/HttpServerExchange;Lio/undertow/io/Sender;)V
28: return
29: StackMap locals:
StackMap stack:
aload 5
aload 1
invokeinterface org.xnio.channels.StreamSinkChannel.write:(Ljava/nio/ByteBuffer;)I
istore 6
start local 6 30: iload 6
ifne 38
31: aload 0
iconst_1
anewarray java.nio.ByteBuffer
dup
iconst_0
aload 1
aastore
putfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
32: aload 0
aload 2
putfield io.undertow.io.AsyncSenderImpl.callback:Lio/undertow/io/IoCallback;
33: aload 0
getfield io.undertow.io.AsyncSenderImpl.writeListener:Lorg/xnio/ChannelListener;
ifnonnull 35
34: aload 0
invokevirtual io.undertow.io.AsyncSenderImpl.initWriteListener:()V
35: StackMap locals: int
StackMap stack:
aload 5
invokeinterface org.xnio.channels.StreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
aload 0
getfield io.undertow.io.AsyncSenderImpl.writeListener:Lorg/xnio/ChannelListener;
invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
36: aload 5
invokeinterface org.xnio.channels.StreamSinkChannel.resumeWrites:()V
37: return
end local 6 38: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 26
39: aload 0
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnComplete:()V
40: goto 43
StackMap locals:
StackMap stack: java.io.IOException
41: astore 6
start local 6 42: aload 0
aload 2
aload 6
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
end local 6 43: StackMap locals:
StackMap stack:
return
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Lio/undertow/io/AsyncSenderImpl;
0 44 1 buffer Ljava/nio/ByteBuffer;
0 44 2 callback Lio/undertow/io/IoCallback;
11 44 3 responseContentLength J
15 44 5 channel Lorg/xnio/channels/StreamSinkChannel;
30 38 6 res I
42 43 6 e Ljava/io/IOException;
Exception table:
from to target type
26 28 41 Class java.io.IOException
29 37 41 Class java.io.IOException
38 40 41 Class java.io.IOException
MethodParameters:
Name Flags
buffer final
callback final
public void send(java.nio.ByteBuffer[], io.undertow.io.IoCallback);
descriptor: ([Ljava/nio/ByteBuffer;Lio/undertow/io/IoCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=14, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield io.undertow.io.AsyncSenderImpl.writeThread:Ljava/lang/Thread;
1: aload 2
ifnonnull 3
2: getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
ldc "callback"
invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
invokevirtual io.undertow.server.ServerConnection.isOpen:()Z
ifne 6
4: aload 0
aload 2
new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
5: return
6: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.isResponseComplete:()Z
ifeq 8
7: aload 0
aload 2
new java.io.IOException
dup
getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.responseComplete:()Ljava/lang/IllegalStateException;
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
8: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
ifnull 10
9: getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.dataAlreadyQueued:()Ljava/lang/IllegalStateException;
athrow
10: StackMap locals:
StackMap stack:
aload 0
aload 2
putfield io.undertow.io.AsyncSenderImpl.callback:Lio/undertow/io/IoCallback;
11: aload 0
getfield io.undertow.io.AsyncSenderImpl.inCallback:Ljava/lang/Thread;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
if_acmpne 14
12: aload 0
aload 1
putfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
13: return
14: StackMap locals:
StackMap stack:
aload 1
invokestatic org.xnio.Buffers.remaining:([Ljava/nio/Buffer;)J
lstore 3
start local 3 15: aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseContentLength:()J
lstore 5
start local 5 16: lload 5
lconst_0
lcmp
ifle 19
lload 3
lload 5
lcmp
ifle 19
17: aload 0
aload 2
getstatic io.undertow.UndertowLogger.ROOT_LOGGER:Lio/undertow/UndertowLogger;
lload 3
lload 5
invokeinterface io.undertow.UndertowLogger.dataLargerThanContentLength:(JJ)Ljava/io/IOException;
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
18: return
19: StackMap locals: long long
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.channel:Lorg/xnio/channels/StreamSinkChannel;
astore 7
start local 7 20: aload 7
ifnonnull 27
21: aload 2
getstatic io.undertow.io.IoCallback.END_EXCHANGE:Lio/undertow/io/IoCallback;
if_acmpne 24
22: lload 5
ldc -1
lcmp
ifne 24
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseHeaders:()Lio/undertow/util/HeaderMap;
getstatic io.undertow.util.Headers.TRANSFER_ENCODING:Lio/undertow/util/HttpString;
invokevirtual io.undertow.util.HeaderMap.contains:(Lio/undertow/util/HttpString;)Z
ifne 24
23: aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
lload 3
invokevirtual io.undertow.server.HttpServerExchange.setResponseContentLength:(J)Lio/undertow/server/HttpServerExchange;
pop
24: StackMap locals: org.xnio.channels.StreamSinkChannel
StackMap stack:
aload 0
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseChannel:()Lorg/xnio/channels/StreamSinkChannel;
dup
astore 7
putfield io.undertow.io.AsyncSenderImpl.channel:Lorg/xnio/channels/StreamSinkChannel;
25: aload 7
ifnonnull 27
26: getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.responseChannelAlreadyProvided:()Ljava/lang/IllegalStateException;
athrow
27: StackMap locals:
StackMap stack:
lload 3
lstore 8
start local 8 28: lconst_0
lstore 10
start local 10 29: StackMap locals: long long
StackMap stack:
aload 7
aload 1
invokeinterface org.xnio.channels.StreamSinkChannel.write:([Ljava/nio/ByteBuffer;)J
lstore 12
start local 12 30: lload 10
lload 12
ladd
lstore 10
31: lload 12
lconst_0
lcmp
ifne 39
32: aload 0
aload 1
putfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
33: aload 0
aload 2
putfield io.undertow.io.AsyncSenderImpl.callback:Lio/undertow/io/IoCallback;
34: aload 0
getfield io.undertow.io.AsyncSenderImpl.writeListener:Lorg/xnio/ChannelListener;
ifnonnull 36
35: aload 0
invokevirtual io.undertow.io.AsyncSenderImpl.initWriteListener:()V
36: StackMap locals: long
StackMap stack:
aload 7
invokeinterface org.xnio.channels.StreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
aload 0
getfield io.undertow.io.AsyncSenderImpl.writeListener:Lorg/xnio/ChannelListener;
invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
37: aload 7
invokeinterface org.xnio.channels.StreamSinkChannel.resumeWrites:()V
38: return
end local 12 39: StackMap locals:
StackMap stack:
lload 10
lload 8
40: lcmp
iflt 29
41: aload 0
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnComplete:()V
42: goto 45
StackMap locals:
StackMap stack: java.io.IOException
43: astore 12
start local 12 44: aload 0
aload 2
aload 12
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
end local 12 45: StackMap locals:
StackMap stack:
return
end local 10 end local 8 end local 7 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 46 0 this Lio/undertow/io/AsyncSenderImpl;
0 46 1 buffer [Ljava/nio/ByteBuffer;
0 46 2 callback Lio/undertow/io/IoCallback;
15 46 3 totalToWrite J
16 46 5 responseContentLength J
20 46 7 channel Lorg/xnio/channels/StreamSinkChannel;
28 46 8 total J
29 46 10 written J
30 39 12 res J
44 45 12 e Ljava/io/IOException;
Exception table:
from to target type
29 38 43 Class java.io.IOException
39 42 43 Class java.io.IOException
MethodParameters:
Name Flags
buffer final
callback final
public void transferFrom(java.nio.channels.FileChannel, io.undertow.io.IoCallback);
descriptor: (Ljava/nio/channels/FileChannel;Lio/undertow/io/IoCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield io.undertow.io.AsyncSenderImpl.writeThread:Ljava/lang/Thread;
1: aload 2
ifnonnull 3
2: getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
ldc "callback"
invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
invokevirtual io.undertow.server.ServerConnection.isOpen:()Z
ifne 6
4: aload 0
aload 2
new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
5: return
6: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.isResponseComplete:()Z
ifeq 8
7: aload 0
aload 2
new java.io.IOException
dup
getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.responseComplete:()Ljava/lang/IllegalStateException;
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
8: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.fileChannel:Ljava/nio/channels/FileChannel;
ifnonnull 9
aload 0
getfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
ifnull 10
9: StackMap locals:
StackMap stack:
getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.dataAlreadyQueued:()Ljava/lang/IllegalStateException;
athrow
10: StackMap locals:
StackMap stack:
aload 0
aload 2
putfield io.undertow.io.AsyncSenderImpl.callback:Lio/undertow/io/IoCallback;
11: aload 0
aload 1
putfield io.undertow.io.AsyncSenderImpl.fileChannel:Ljava/nio/channels/FileChannel;
12: aload 0
getfield io.undertow.io.AsyncSenderImpl.inCallback:Ljava/lang/Thread;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
if_acmpne 14
13: return
14: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.transferTask:Lio/undertow/io/AsyncSenderImpl$TransferTask;
ifnonnull 16
15: aload 0
new io.undertow.io.AsyncSenderImpl$TransferTask
dup
aload 0
invokespecial io.undertow.io.AsyncSenderImpl$TransferTask.<init>:(Lio/undertow/io/AsyncSenderImpl;)V
putfield io.undertow.io.AsyncSenderImpl.transferTask:Lio/undertow/io/AsyncSenderImpl$TransferTask;
16: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.isInIoThread:()Z
ifeq 19
17: aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
aload 0
getfield io.undertow.io.AsyncSenderImpl.transferTask:Lio/undertow/io/AsyncSenderImpl$TransferTask;
invokevirtual io.undertow.server.HttpServerExchange.dispatch:(Ljava/lang/Runnable;)Lio/undertow/server/HttpServerExchange;
pop
18: return
19: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.transferTask:Lio/undertow/io/AsyncSenderImpl$TransferTask;
invokevirtual io.undertow.io.AsyncSenderImpl$TransferTask.run:()V
20: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lio/undertow/io/AsyncSenderImpl;
0 21 1 source Ljava/nio/channels/FileChannel;
0 21 2 callback Lio/undertow/io/IoCallback;
MethodParameters:
Name Flags
source
callback
public void send(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getstatic io.undertow.io.IoCallback.END_EXCHANGE:Lio/undertow/io/IoCallback;
invokevirtual io.undertow.io.AsyncSenderImpl.send:(Ljava/nio/ByteBuffer;Lio/undertow/io/IoCallback;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/undertow/io/AsyncSenderImpl;
0 2 1 buffer Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
buffer final
public void send(java.nio.ByteBuffer[]);
descriptor: ([Ljava/nio/ByteBuffer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getstatic io.undertow.io.IoCallback.END_EXCHANGE:Lio/undertow/io/IoCallback;
invokevirtual io.undertow.io.AsyncSenderImpl.send:([Ljava/nio/ByteBuffer;Lio/undertow/io/IoCallback;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/undertow/io/AsyncSenderImpl;
0 2 1 buffer [Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
buffer final
public void send(java.lang.String, io.undertow.io.IoCallback);
descriptor: (Ljava/lang/String;Lio/undertow/io/IoCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
aload 2
invokevirtual io.undertow.io.AsyncSenderImpl.send:(Ljava/lang/String;Ljava/nio/charset/Charset;Lio/undertow/io/IoCallback;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/undertow/io/AsyncSenderImpl;
0 2 1 data Ljava/lang/String;
0 2 2 callback Lio/undertow/io/IoCallback;
MethodParameters:
Name Flags
data final
callback final
public void send(java.lang.String, java.nio.charset.Charset, io.undertow.io.IoCallback);
descriptor: (Ljava/lang/String;Ljava/nio/charset/Charset;Lio/undertow/io/IoCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield io.undertow.io.AsyncSenderImpl.writeThread:Ljava/lang/Thread;
1: aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
invokevirtual io.undertow.server.ServerConnection.isOpen:()Z
ifne 4
2: aload 0
aload 3
new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
3: return
4: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.isResponseComplete:()Z
ifeq 6
5: aload 0
aload 3
new java.io.IOException
dup
getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.responseComplete:()Ljava/lang/IllegalStateException;
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
6: StackMap locals:
StackMap stack:
aload 1
aload 2
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
astore 4
start local 4 7: aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
ifne 10
8: aload 3
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
aload 0
invokeinterface io.undertow.io.IoCallback.onComplete:(Lio/undertow/server/HttpServerExchange;Lio/undertow/io/Sender;)V
9: goto 25
10: StackMap locals: java.nio.ByteBuffer
StackMap stack:
iconst_0
istore 5
start local 5 11: aconst_null
astore 6
start local 6 12: goto 23
13: StackMap locals: int java.nio.ByteBuffer[]
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
invokevirtual io.undertow.server.ServerConnection.getByteBufferPool:()Lio/undertow/connector/ByteBufferPool;
invokeinterface io.undertow.connector.ByteBufferPool.allocate:()Lio/undertow/connector/PooledByteBuffer;
astore 7
start local 7 14: aload 6
ifnonnull 18
15: aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
aload 7
invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
iadd
iconst_1
isub
aload 7
invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
idiv
istore 8
start local 8 16: aload 0
iload 8
anewarray io.undertow.connector.PooledByteBuffer
putfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
17: iload 8
anewarray java.nio.ByteBuffer
astore 6
end local 8 18: StackMap locals: io.undertow.connector.PooledByteBuffer
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
iload 5
aload 7
aastore
19: aload 6
iload 5
aload 7
invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
aastore
20: aload 7
invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
aload 4
invokestatic org.xnio.Buffers.copy:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
pop
21: aload 7
invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
22: iinc 5 1
end local 7 23: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 13
24: aload 0
aload 6
aload 3
invokevirtual io.undertow.io.AsyncSenderImpl.send:([Ljava/nio/ByteBuffer;Lio/undertow/io/IoCallback;)V
end local 6 end local 5 25: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lio/undertow/io/AsyncSenderImpl;
0 26 1 data Ljava/lang/String;
0 26 2 charset Ljava/nio/charset/Charset;
0 26 3 callback Lio/undertow/io/IoCallback;
7 26 4 bytes Ljava/nio/ByteBuffer;
11 25 5 i I
12 25 6 bufs [Ljava/nio/ByteBuffer;
14 23 7 pooled Lio/undertow/connector/PooledByteBuffer;
16 18 8 noBufs I
MethodParameters:
Name Flags
data final
charset final
callback final
public void send(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getstatic io.undertow.io.IoCallback.END_EXCHANGE:Lio/undertow/io/IoCallback;
invokevirtual io.undertow.io.AsyncSenderImpl.send:(Ljava/lang/String;Lio/undertow/io/IoCallback;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/undertow/io/AsyncSenderImpl;
0 2 1 data Ljava/lang/String;
MethodParameters:
Name Flags
data final
public void send(java.lang.String, java.nio.charset.Charset);
descriptor: (Ljava/lang/String;Ljava/nio/charset/Charset;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
getstatic io.undertow.io.IoCallback.END_EXCHANGE:Lio/undertow/io/IoCallback;
invokevirtual io.undertow.io.AsyncSenderImpl.send:(Ljava/lang/String;Ljava/nio/charset/Charset;Lio/undertow/io/IoCallback;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/undertow/io/AsyncSenderImpl;
0 2 1 data Ljava/lang/String;
0 2 2 charset Ljava/nio/charset/Charset;
MethodParameters:
Name Flags
data final
charset final
public void close(io.undertow.io.IoCallback);
descriptor: (Lio/undertow/io/IoCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield io.undertow.io.AsyncSenderImpl.channel:Lorg/xnio/channels/StreamSinkChannel;
astore 2
start local 2 1: aload 2
ifnonnull 7
2: aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseContentLength:()J
ldc -1
lcmp
ifne 4
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseHeaders:()Lio/undertow/util/HeaderMap;
getstatic io.undertow.util.Headers.TRANSFER_ENCODING:Lio/undertow/util/HttpString;
invokevirtual io.undertow.util.HeaderMap.contains:(Lio/undertow/util/HttpString;)Z
ifne 4
3: aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
lconst_0
invokevirtual io.undertow.server.HttpServerExchange.setResponseContentLength:(J)Lio/undertow/server/HttpServerExchange;
pop
4: StackMap locals: org.xnio.channels.StreamSinkChannel
StackMap stack:
aload 0
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseChannel:()Lorg/xnio/channels/StreamSinkChannel;
dup
astore 2
putfield io.undertow.io.AsyncSenderImpl.channel:Lorg/xnio/channels/StreamSinkChannel;
5: aload 2
ifnonnull 7
6: getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
invokeinterface io.undertow.UndertowMessages.responseChannelAlreadyProvided:()Ljava/lang/IllegalStateException;
athrow
7: StackMap locals:
StackMap stack:
aload 2
invokeinterface org.xnio.channels.StreamSinkChannel.shutdownWrites:()V
8: aload 2
invokeinterface org.xnio.channels.StreamSinkChannel.flush:()Z
ifne 15
9: aload 2
invokeinterface org.xnio.channels.StreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
10: new io.undertow.io.AsyncSenderImpl$1
dup
aload 0
aload 1
invokespecial io.undertow.io.AsyncSenderImpl$1.<init>:(Lio/undertow/io/AsyncSenderImpl;Lio/undertow/io/IoCallback;)V
11: new io.undertow.io.AsyncSenderImpl$2
dup
aload 0
aload 1
invokespecial io.undertow.io.AsyncSenderImpl$2.<init>:(Lio/undertow/io/AsyncSenderImpl;Lio/undertow/io/IoCallback;)V
12: invokestatic org.xnio.ChannelListeners.flushingChannelListener:(Lorg/xnio/ChannelListener;Lorg/xnio/ChannelExceptionHandler;)Lorg/xnio/ChannelListener;
invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
13: aload 2
invokeinterface org.xnio.channels.StreamSinkChannel.resumeWrites:()V
14: goto 21
15: StackMap locals:
StackMap stack:
aload 1
ifnull 21
16: aload 1
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
aload 0
invokeinterface io.undertow.io.IoCallback.onComplete:(Lio/undertow/server/HttpServerExchange;Lio/undertow/io/Sender;)V
end local 2 17: goto 21
StackMap locals: io.undertow.io.AsyncSenderImpl io.undertow.io.IoCallback
StackMap stack: java.io.IOException
18: astore 2
start local 2 19: aload 1
ifnull 21
20: aload 0
aload 1
aload 2
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
end local 2 21: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lio/undertow/io/AsyncSenderImpl;
0 22 1 callback Lio/undertow/io/IoCallback;
1 17 2 channel Lorg/xnio/channels/StreamSinkChannel;
19 21 2 e Ljava/io/IOException;
Exception table:
from to target type
0 17 18 Class java.io.IOException
MethodParameters:
Name Flags
callback final
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
invokevirtual io.undertow.io.AsyncSenderImpl.close:(Lio/undertow/io/IoCallback;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/undertow/io/AsyncSenderImpl;
private void invokeOnComplete();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=11, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
ifnull 7
1: aload 0
getfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
dup
astore 4
arraylength
istore 3
iconst_0
istore 2
goto 5
StackMap locals: io.undertow.io.AsyncSenderImpl top int int io.undertow.connector.PooledByteBuffer[]
StackMap stack:
2: aload 4
iload 2
aaload
astore 1
start local 1 3: aload 1
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
end local 1 4: iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
iload 3
if_icmplt 2
6: aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
7: StackMap locals: io.undertow.io.AsyncSenderImpl
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.callback:Lio/undertow/io/IoCallback;
astore 1
start local 1 8: aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
9: aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.fileChannel:Ljava/nio/channels/FileChannel;
10: aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.callback:Lio/undertow/io/IoCallback;
11: aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.writeThread:Ljava/lang/Thread;
12: aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield io.undertow.io.AsyncSenderImpl.inCallback:Ljava/lang/Thread;
13: aload 1
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
aload 0
invokeinterface io.undertow.io.IoCallback.onComplete:(Lio/undertow/server/HttpServerExchange;Lio/undertow/io/Sender;)V
14: goto 18
StackMap locals: io.undertow.io.AsyncSenderImpl io.undertow.io.IoCallback
StackMap stack: java.lang.Throwable
15: astore 2
16: aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.inCallback:Ljava/lang/Thread;
17: aload 2
athrow
18: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.inCallback:Ljava/lang/Thread;
19: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
aload 0
getfield io.undertow.io.AsyncSenderImpl.writeThread:Ljava/lang/Thread;
if_acmpeq 21
20: return
21: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.channel:Lorg/xnio/channels/StreamSinkChannel;
astore 2
start local 2 22: aload 0
getfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
ifnull 40
23: aload 0
getfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
invokestatic org.xnio.Buffers.remaining:([Ljava/nio/Buffer;)J
lstore 3
start local 3 24: lload 3
lstore 5
start local 5 25: lconst_0
lstore 7
start local 7 26: StackMap locals: io.undertow.io.AsyncSenderImpl io.undertow.io.IoCallback org.xnio.channels.StreamSinkChannel long long long
StackMap stack:
aload 2
aload 0
getfield io.undertow.io.AsyncSenderImpl.buffer:[Ljava/nio/ByteBuffer;
invokeinterface org.xnio.channels.StreamSinkChannel.write:([Ljava/nio/ByteBuffer;)J
lstore 9
start local 9 27: lload 7
lload 9
ladd
lstore 7
28: lload 9
lconst_0
lcmp
ifne 34
29: aload 0
getfield io.undertow.io.AsyncSenderImpl.writeListener:Lorg/xnio/ChannelListener;
ifnonnull 31
30: aload 0
invokevirtual io.undertow.io.AsyncSenderImpl.initWriteListener:()V
31: StackMap locals: long
StackMap stack:
aload 2
invokeinterface org.xnio.channels.StreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
aload 0
getfield io.undertow.io.AsyncSenderImpl.writeListener:Lorg/xnio/ChannelListener;
invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
32: aload 2
invokeinterface org.xnio.channels.StreamSinkChannel.resumeWrites:()V
33: return
end local 9 34: StackMap locals:
StackMap stack:
lload 7
lload 5
35: lcmp
iflt 26
36: goto 0
StackMap locals:
StackMap stack: java.io.IOException
37: astore 9
start local 9 38: aload 0
aload 1
aload 9
invokevirtual io.undertow.io.AsyncSenderImpl.invokeOnException:(Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
end local 9 end local 7 end local 5 end local 3 39: goto 0
StackMap locals:
StackMap stack:
40: aload 0
getfield io.undertow.io.AsyncSenderImpl.fileChannel:Ljava/nio/channels/FileChannel;
ifnull 45
41: aload 0
getfield io.undertow.io.AsyncSenderImpl.transferTask:Lio/undertow/io/AsyncSenderImpl$TransferTask;
ifnonnull 43
42: aload 0
new io.undertow.io.AsyncSenderImpl$TransferTask
dup
aload 0
invokespecial io.undertow.io.AsyncSenderImpl$TransferTask.<init>:(Lio/undertow/io/AsyncSenderImpl;)V
putfield io.undertow.io.AsyncSenderImpl.transferTask:Lio/undertow/io/AsyncSenderImpl$TransferTask;
43: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.io.AsyncSenderImpl.transferTask:Lio/undertow/io/AsyncSenderImpl$TransferTask;
iconst_0
invokevirtual io.undertow.io.AsyncSenderImpl$TransferTask.run:(Z)Z
ifne 0
44: return
45: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 46 0 this Lio/undertow/io/AsyncSenderImpl;
3 4 1 buffer Lio/undertow/connector/PooledByteBuffer;
8 46 1 callback Lio/undertow/io/IoCallback;
22 46 2 channel Lorg/xnio/channels/StreamSinkChannel;
24 39 3 t J
25 39 5 total J
26 39 7 written J
27 34 9 res J
38 39 9 e Ljava/io/IOException;
Exception table:
from to target type
13 15 15 any
26 33 37 Class java.io.IOException
34 36 37 Class java.io.IOException
private void invokeOnException(io.undertow.io.IoCallback, java.io.IOException);
descriptor: (Lio/undertow/io/IoCallback;Ljava/io/IOException;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
ifnull 7
1: aload 0
getfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 5
StackMap locals: io.undertow.io.AsyncSenderImpl io.undertow.io.IoCallback java.io.IOException top int int io.undertow.connector.PooledByteBuffer[]
StackMap stack:
2: aload 6
iload 4
aaload
astore 3
start local 3 3: aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
end local 3 4: iinc 4 1
StackMap locals:
StackMap stack:
5: iload 4
iload 5
if_icmplt 2
6: aload 0
aconst_null
putfield io.undertow.io.AsyncSenderImpl.pooledBuffers:[Lio/undertow/connector/PooledByteBuffer;
7: StackMap locals: io.undertow.io.AsyncSenderImpl io.undertow.io.IoCallback java.io.IOException
StackMap stack:
aload 1
aload 0
getfield io.undertow.io.AsyncSenderImpl.exchange:Lio/undertow/server/HttpServerExchange;
aload 0
aload 2
invokeinterface io.undertow.io.IoCallback.onException:(Lio/undertow/server/HttpServerExchange;Lio/undertow/io/Sender;Ljava/io/IOException;)V
8: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lio/undertow/io/AsyncSenderImpl;
0 9 1 callback Lio/undertow/io/IoCallback;
0 9 2 e Ljava/io/IOException;
3 4 3 buffer Lio/undertow/connector/PooledByteBuffer;
MethodParameters:
Name Flags
callback
e
private void initWriteListener();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
new io.undertow.io.AsyncSenderImpl$3
dup
aload 0
invokespecial io.undertow.io.AsyncSenderImpl$3.<init>:(Lio/undertow/io/AsyncSenderImpl;)V
putfield io.undertow.io.AsyncSenderImpl.writeListener:Lorg/xnio/ChannelListener;
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/undertow/io/AsyncSenderImpl;
}
SourceFile: "AsyncSenderImpl.java"
NestMembers:
io.undertow.io.AsyncSenderImpl$1 io.undertow.io.AsyncSenderImpl$2 io.undertow.io.AsyncSenderImpl$3 io.undertow.io.AsyncSenderImpl$TransferTask
InnerClasses:
io.undertow.io.AsyncSenderImpl$1
io.undertow.io.AsyncSenderImpl$2
io.undertow.io.AsyncSenderImpl$3
public TransferTask = io.undertow.io.AsyncSenderImpl$TransferTask of io.undertow.io.AsyncSenderImpl
public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener