public class org.glassfish.grizzly.http2.Http2SessionOutputSink
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.glassfish.grizzly.http2.Http2SessionOutputSink
super_class: java.lang.Object
{
protected final org.glassfish.grizzly.http2.Http2Session http2Session;
descriptor: Lorg/glassfish/grizzly/http2/Http2Session;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
private static final java.util.logging.Logger LOGGER;
descriptor: Ljava/util/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.logging.Level LOGGER_LEVEL;
descriptor: Ljava/util/logging/Level;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int MAX_FRAME_PAYLOAD_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16383
private static final int MAX_OUTPUT_QUEUE_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65536
private final org.glassfish.grizzly.asyncqueue.TaskQueue<org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord> outputQueue;
descriptor: Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/glassfish/grizzly/asyncqueue/TaskQueue<Lorg/glassfish/grizzly/http2/Http2SessionOutputSink$OutputQueueRecord;>;
private final java.util.concurrent.atomic.AtomicInteger availConnectionWindowSize;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.List<org.glassfish.grizzly.http2.frames.Http2Frame> tmpFramesList;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;
private final java.util.concurrent.atomic.AtomicBoolean writerLock;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.$assertionsDisabled:Z
3: ldc Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
invokestatic org.glassfish.grizzly.Grizzly.logger:(Ljava/lang/Class;)Ljava/util/logging/Logger;
putstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
4: getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
putstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER_LEVEL:Ljava/util/logging/Level;
5: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.glassfish.grizzly.http2.Http2Session);
descriptor: (Lorg/glassfish/grizzly/http2/Http2Session;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new org.glassfish.grizzly.http2.Http2SessionOutputSink$1
dup
aload 0
invokespecial org.glassfish.grizzly.http2.Http2SessionOutputSink$1.<init>:(Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;)V
invokestatic org.glassfish.grizzly.asyncqueue.TaskQueue.createTaskQueue:(Lorg/glassfish/grizzly/asyncqueue/TaskQueue$MutableMaxQueueSize;)Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
3: aload 0
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
4: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.writerLock:Ljava/util/concurrent/atomic/AtomicBoolean;
5: aload 0
aload 1
putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
6: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
7: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
invokevirtual org.glassfish.grizzly.http2.Http2Session.getDefaultConnectionWindowSize:()I
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
8: putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 10 1 session Lorg/glassfish/grizzly/http2/Http2Session;
MethodParameters:
Name Flags
session
protected org.glassfish.grizzly.http2.Http2FrameCodec frameCodec();
descriptor: ()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
getfield org.glassfish.grizzly.http2.Http2Session.handlerFilter:Lorg/glassfish/grizzly/http2/Http2BaseFilter;
getfield org.glassfish.grizzly.http2.Http2BaseFilter.frameCodec:Lorg/glassfish/grizzly/http2/Http2FrameCodec;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
protected void writeDownStream(org.glassfish.grizzly.http2.frames.Http2Frame);
descriptor: (Lorg/glassfish/grizzly/http2/frames/Http2Frame;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
invokevirtual org.glassfish.grizzly.http2.Http2Session.getHttp2SessionChain:()Lorg/glassfish/grizzly/filterchain/FilterChain;
1: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
invokevirtual org.glassfish.grizzly.http2.Http2Session.getConnection:()Lorg/glassfish/grizzly/Connection;
aconst_null
2: aload 0
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.frameCodec:()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
aload 1
invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Lorg/glassfish/grizzly/http2/frames/Http2Frame;)Lorg/glassfish/grizzly/Buffer;
3: aconst_null
aconst_null
4: invokeinterface org.glassfish.grizzly.filterchain.FilterChain.write:(Lorg/glassfish/grizzly/Connection;Ljava/lang/Object;Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 6 1 frame Lorg/glassfish/grizzly/http2/frames/Http2Frame;
MethodParameters:
Name Flags
frame final
protected void writeDownStream(java.util.List<org.glassfish.grizzly.http2.frames.Http2Frame>);
descriptor: (Ljava/util/List;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
invokevirtual org.glassfish.grizzly.http2.Http2Session.getHttp2SessionChain:()Lorg/glassfish/grizzly/filterchain/FilterChain;
1: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
invokevirtual org.glassfish.grizzly.http2.Http2Session.getConnection:()Lorg/glassfish/grizzly/Connection;
aconst_null
2: aload 0
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.frameCodec:()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
aload 1
invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Ljava/util/List;)Lorg/glassfish/grizzly/Buffer;
3: aconst_null
aconst_null
4: invokeinterface org.glassfish.grizzly.filterchain.FilterChain.write:(Lorg/glassfish/grizzly/Connection;Ljava/lang/Object;Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 6 1 frames Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;
Signature: (Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;)V
MethodParameters:
Name Flags
frames final
protected <K> void writeDownStream(K, org.glassfish.grizzly.CompletionHandler<org.glassfish.grizzly.WriteResult>, org.glassfish.grizzly.asyncqueue.MessageCloner<org.glassfish.grizzly.Buffer>);
descriptor: (Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
instanceof java.util.List
ifeq 5
1: aload 0
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.frameCodec:()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
2: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
aload 1
checkcast java.util.List
3: invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Ljava/util/List;)Lorg/glassfish/grizzly/Buffer;
astore 4
start local 4 4: goto 11
end local 4 StackMap locals:
StackMap stack:
5: aload 1
instanceof org.glassfish.grizzly.http2.frames.Http2Frame
ifeq 10
6: aload 0
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.frameCodec:()Lorg/glassfish/grizzly/http2/Http2FrameCodec;
7: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
aload 1
checkcast org.glassfish.grizzly.http2.frames.Http2Frame
8: invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Lorg/glassfish/grizzly/http2/frames/Http2Frame;)Lorg/glassfish/grizzly/Buffer;
astore 4
start local 4 9: goto 11
end local 4 10: StackMap locals:
StackMap stack:
aload 1
astore 4
start local 4 11: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
invokevirtual org.glassfish.grizzly.http2.Http2Session.getHttp2SessionChain:()Lorg/glassfish/grizzly/filterchain/FilterChain;
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
invokevirtual org.glassfish.grizzly.http2.Http2Session.getConnection:()Lorg/glassfish/grizzly/Connection;
12: aconst_null
aload 4
aload 2
aload 3
13: invokeinterface org.glassfish.grizzly.filterchain.FilterChain.write:(Lorg/glassfish/grizzly/Connection;Ljava/lang/Object;Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
14: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 15 1 anyMessage TK;
0 15 2 completionHandler Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
0 15 3 messageCloner Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;
4 5 4 msg Ljava/lang/Object;
9 10 4 msg Ljava/lang/Object;
11 15 4 msg Ljava/lang/Object;
Signature: <K:Ljava/lang/Object;>(TK;Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;)V
MethodParameters:
Name Flags
anyMessage final
completionHandler final
messageCloner final
protected int getAvailablePeerConnectionWindowSize();
descriptor: ()I
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
protected boolean canWrite();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.size:()I
ldc 65536
if_icmpge 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
protected void notifyCanWrite(org.glassfish.grizzly.WriteHandler);
descriptor: (Lorg/glassfish/grizzly/WriteHandler;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
aload 1
ldc 65536
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.notifyWritePossible:(Lorg/glassfish/grizzly/WriteHandler;I)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 2 1 writeHandler Lorg/glassfish/grizzly/WriteHandler;
MethodParameters:
Name Flags
writeHandler final
protected void onPeerWindowUpdate(int);
descriptor: (I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 2
start local 2 1: iload 1
ifle 3
iload 2
ifle 3
iload 2
iload 1
iadd
ifge 3
2: new org.glassfish.grizzly.http2.Http2SessionException
dup
getstatic org.glassfish.grizzly.http2.frames.ErrorCode.FLOW_CONTROL_ERROR:Lorg/glassfish/grizzly/http2/frames/ErrorCode;
ldc "Session flow-control window overflow."
invokespecial org.glassfish.grizzly.http2.Http2SessionException.<init>:(Lorg/glassfish/grizzly/http2/frames/ErrorCode;Ljava/lang/String;)V
athrow
3: StackMap locals: int
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
iload 1
invokevirtual java.util.concurrent.atomic.AtomicInteger.addAndGet:(I)I
istore 3
start local 3 4: getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER_LEVEL:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 8
5: getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER_LEVEL:Ljava/util/logging/Level;
ldc "Http2Session. Expand connection window size by {0} bytes. Current connection window size is: {1}"
6: iconst_2
anewarray java.lang.Object
dup
iconst_0
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
7: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
8: StackMap locals: int
StackMap stack:
aload 0
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.flushOutputQueue:()V
9: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 10 1 delta I
1 10 2 currentWindow I
4 10 3 newWindowSize I
Exceptions:
throws org.glassfish.grizzly.http2.Http2SessionException
MethodParameters:
Name Flags
delta final
protected void writeDataDownStream(org.glassfish.grizzly.http2.Http2Stream, java.util.List<org.glassfish.grizzly.http2.frames.Http2Frame>, org.glassfish.grizzly.Buffer, org.glassfish.grizzly.CompletionHandler<org.glassfish.grizzly.WriteResult>, org.glassfish.grizzly.asyncqueue.MessageCloner<org.glassfish.grizzly.Buffer>, );
descriptor: (Lorg/glassfish/grizzly/http2/Http2Stream;Ljava/util/List;Lorg/glassfish/grizzly/Buffer;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;Z)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=9, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 3
ifnull 2
1: aload 3
invokeinterface org.glassfish.grizzly.Buffer.hasRemaining:()Z
ifne 17
aload 1
invokevirtual org.glassfish.grizzly.http2.Http2Stream.getUnflushedWritesCount:()I
iconst_1
if_icmpne 17
2: StackMap locals:
StackMap stack:
aload 3
ifnonnull 5
3: aload 0
aload 2
aload 4
aload 5
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
4: return
5: StackMap locals:
StackMap stack:
invokestatic org.glassfish.grizzly.http2.frames.DataFrame.builder:()Lorg/glassfish/grizzly/http2/frames/DataFrame$DataFrameBuilder;
6: aload 1
invokevirtual org.glassfish.grizzly.http2.Http2Stream.getId:()I
invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.streamId:(I)Lorg/glassfish/grizzly/http2/frames/Http2Frame$Http2FrameBuilder;
checkcast org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder
7: aload 3
invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.data:(Lorg/glassfish/grizzly/Buffer;)Lorg/glassfish/grizzly/http2/frames/DataFrame$DataFrameBuilder;
iload 6
invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.endStream:(Z)Lorg/glassfish/grizzly/http2/frames/DataFrame$DataFrameBuilder;
8: invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.build:()Lorg/glassfish/grizzly/http2/frames/DataFrame;
9: astore 7
start local 7 10: aload 2
ifnull 14
aload 2
invokeinterface java.util.List.isEmpty:()Z
ifne 14
11: aload 2
aload 7
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
12: aload 2
astore 8
start local 8 13: goto 15
end local 8 14: StackMap locals: org.glassfish.grizzly.http2.frames.DataFrame
StackMap stack:
aload 7
astore 8
start local 8 15: StackMap locals: java.lang.Object
StackMap stack:
aload 0
aload 8
aload 4
aload 5
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
16: return
end local 8 end local 7 17: StackMap locals:
StackMap stack:
aload 2
ifnull 19
aload 2
invokeinterface java.util.List.isEmpty:()Z
ifne 19
18: aload 0
aload 2
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/util/List;)V
19: StackMap locals:
StackMap stack:
aload 3
invokeinterface org.glassfish.grizzly.Buffer.remaining:()I
istore 7
start local 7 20: aload 5
ifnull 22
21: aload 5
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
invokevirtual org.glassfish.grizzly.http2.Http2Session.getConnection:()Lorg/glassfish/grizzly/Connection;
aload 3
invokeinterface org.glassfish.grizzly.asyncqueue.MessageCloner.clone:(Lorg/glassfish/grizzly/Connection;Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.glassfish.grizzly.Buffer
astore 3
22: StackMap locals: int
StackMap stack:
new org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord
dup
23: aload 1
invokevirtual org.glassfish.grizzly.http2.Http2Stream.getId:()I
aload 3
24: aload 4
iload 6
25: invokespecial org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord.<init>:(ILorg/glassfish/grizzly/Buffer;Lorg/glassfish/grizzly/CompletionHandler;Z)V
astore 8
start local 8 26: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
aload 8
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.offer:(Lorg/glassfish/grizzly/asyncqueue/AsyncQueueRecord;)V
27: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
aload 8
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord.isZeroSizeData:()Z
ifeq 28
iconst_1
goto 29
StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink org.glassfish.grizzly.http2.Http2Stream java.util.List org.glassfish.grizzly.Buffer org.glassfish.grizzly.CompletionHandler org.glassfish.grizzly.asyncqueue.MessageCloner int int org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord
StackMap stack: org.glassfish.grizzly.asyncqueue.TaskQueue
28: iload 7
StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink org.glassfish.grizzly.http2.Http2Stream java.util.List org.glassfish.grizzly.Buffer org.glassfish.grizzly.CompletionHandler org.glassfish.grizzly.asyncqueue.MessageCloner int int org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord
StackMap stack: org.glassfish.grizzly.asyncqueue.TaskQueue int
29: invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.reserveSpace:(I)I
pop
30: aload 0
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.flushOutputQueue:()V
31: return
end local 8 end local 7 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 32 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 32 1 stream Lorg/glassfish/grizzly/http2/Http2Stream;
0 32 2 headerFrames Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;
0 32 3 data Lorg/glassfish/grizzly/Buffer;
0 32 4 completionHandler Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
0 32 5 messageCloner Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;
0 32 6 isLast Z
10 17 7 dataFrame Lorg/glassfish/grizzly/http2/frames/DataFrame;
13 14 8 msg Ljava/lang/Object;
15 17 8 msg Ljava/lang/Object;
20 32 7 dataSize I
26 32 8 record Lorg/glassfish/grizzly/http2/Http2SessionOutputSink$OutputQueueRecord;
Signature: (Lorg/glassfish/grizzly/http2/Http2Stream;Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;Lorg/glassfish/grizzly/Buffer;Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;Z)V
MethodParameters:
Name Flags
stream final
headerFrames final
data
completionHandler final
messageCloner final
isLast final
private void flushOutputQueue();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=14, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: iconst_0
istore 4
start local 4 2: iconst_0
istore 5
start local 5 3: goto 66
4: StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int top top int int
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 2
start local 2 5: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.size:()I
istore 3
start local 3 6: aconst_null
astore 6
start local 6 7: iconst_0
istore 7
start local 7 8: iconst_0
istore 8
start local 8 9: iconst_0
istore 9
start local 9 10: aconst_null
astore 10
start local 10 11: goto 49
12: StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int int int int int org.glassfish.grizzly.CompletionHandler int int int org.glassfish.grizzly.http2.AggrCompletionHandler
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.poll:()Lorg/glassfish/grizzly/asyncqueue/AsyncQueueRecord;
checkcast org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord
astore 11
start local 11 13: aload 11
ifnonnull 17
14: getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.WARNING:Ljava/util/logging/Level;
ldc "UNEXPECTED NULL RECORD. Queue-size: {0} tmpcnt={1} byteToTransfer={2} queueSizeToFree={3} queueSize={4}"
15: iconst_5
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.size:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
iload 5
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_2
iload 8
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_3
iload 9
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_4
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
16: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
17: StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord
StackMap stack:
getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.$assertionsDisabled:Z
ifne 18
aload 11
ifnonnull 18
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
18: StackMap locals:
StackMap stack:
aload 11
19: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
20: sipush 16383
iload 2
iload 8
isub
invokestatic java.lang.Math.min:(II)I
21: invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord.serializeTo:(Ljava/util/List;I)I
istore 12
start local 12 22: iload 8
iload 12
iadd
istore 8
23: iload 9
iload 12
iadd
istore 9
24: aload 11
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord.isFinished:()Z
ifeq 28
25: aload 11
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord.isZeroSizeData:()Z
ifeq 29
26: iinc 9 1
27: goto 29
28: StackMap locals: int
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
aload 11
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.setCurrentElement:(Lorg/glassfish/grizzly/asyncqueue/AsyncQueueRecord;)V
29: StackMap locals:
StackMap stack:
aload 11
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord.getCompletionHandler:()Lorg/glassfish/grizzly/CompletionHandler;
30: astore 13
start local 13 31: aload 13
ifnull 49
32: aload 10
ifnull 37
33: aload 10
aload 13
34: iload 12
35: invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
36: goto 49
StackMap locals: org.glassfish.grizzly.CompletionHandler
StackMap stack:
37: aload 6
ifnonnull 41
38: aload 13
astore 6
39: iload 12
istore 7
40: goto 49
41: StackMap locals:
StackMap stack:
new org.glassfish.grizzly.http2.AggrCompletionHandler
dup
invokespecial org.glassfish.grizzly.http2.AggrCompletionHandler.<init>:()V
astore 10
42: aload 10
aload 6
43: iload 7
44: invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
45: aload 10
aload 13
46: iload 12
47: invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
48: aload 10
astore 6
end local 13 end local 12 end local 11 49: StackMap locals:
StackMap stack:
iload 2
iload 8
if_icmple 52
50: iload 3
iload 9
51: if_icmpgt 12
52: StackMap locals:
StackMap stack:
iload 9
ifle 63
53: getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.$assertionsDisabled:Z
ifne 54
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 54
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
54: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
aload 6
aconst_null
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;)V
55: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
iload 8
ineg
invokevirtual java.util.concurrent.atomic.AtomicInteger.addAndGet:(I)I
56: istore 11
start local 11 57: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
iload 9
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.releaseSpace:(I)I
pop
58: iconst_1
istore 4
59: getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER_LEVEL:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 63
60: getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER_LEVEL:Ljava/util/logging/Level;
ldc "Http2Session. Shrink connection window size by {0} bytes. Current connection window size is: {1}"
61: iconst_2
anewarray java.lang.Object
dup
iconst_0
iload 8
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
iload 11
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
62: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
end local 11 63: StackMap locals:
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.writerLock:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
64: iload 1
iinc 1 1
i2l
invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(J)V
65: iinc 5 1
end local 10 end local 9 end local 8 end local 7 end local 6 end local 3 end local 2 66: StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int top top int int
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ifle 69
67: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.isEmpty:()Z
ifne 69
68: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.writerLock:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifne 4
69: StackMap locals:
StackMap stack:
iload 4
ifeq 71
70: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.doNotify:()V
71: StackMap locals:
StackMap stack:
return
end local 5 end local 4 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 72 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
1 72 1 backoffDelay I
5 66 2 availWindowSize I
6 66 3 queueSize I
2 72 4 needToNotify Z
3 72 5 tmpcnt I
7 66 6 writeCompletionHandler Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
8 66 7 writeCompletionHandlerBytes I
9 66 8 bytesToTransfer I
10 66 9 queueSizeToFree I
11 66 10 completionHandlers Lorg/glassfish/grizzly/http2/AggrCompletionHandler;
13 49 11 record Lorg/glassfish/grizzly/http2/Http2SessionOutputSink$OutputQueueRecord;
22 49 12 serializedBytes I
31 49 13 recordCompletionHandler Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
57 63 11 newWindowSize I
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.onClose:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
}
SourceFile: "Http2SessionOutputSink.java"
NestMembers:
org.glassfish.grizzly.http2.Http2SessionOutputSink$1 org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord
InnerClasses:
public abstract MutableMaxQueueSize = org.glassfish.grizzly.asyncqueue.TaskQueue$MutableMaxQueueSize of org.glassfish.grizzly.asyncqueue.TaskQueue
org.glassfish.grizzly.http2.Http2SessionOutputSink$1
private OutputQueueRecord = org.glassfish.grizzly.http2.Http2SessionOutputSink$OutputQueueRecord of org.glassfish.grizzly.http2.Http2SessionOutputSink
public DataFrameBuilder = org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder of org.glassfish.grizzly.http2.frames.DataFrame
protected abstract Http2FrameBuilder = org.glassfish.grizzly.http2.frames.Http2Frame$Http2FrameBuilder of org.glassfish.grizzly.http2.frames.Http2Frame