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 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.Http2OutputQueueRecord> outputQueue;
descriptor: Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/glassfish/grizzly/asyncqueue/TaskQueue<Lorg/glassfish/grizzly/http2/Http2OutputQueueRecord;>;
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: 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
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;
2: aload 0
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
3: 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;
4: aload 0
aload 1
putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.http2Session:Lorg/glassfish/grizzly/http2/Http2Session;
5: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
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
putfield org.glassfish.grizzly.http2.Http2SessionOutputSink.availConnectionWindowSize:Ljava/util/concurrent/atomic/AtomicInteger;
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 7 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 3
1: 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
checkcast java.util.List
invokevirtual org.glassfish.grizzly.http2.Http2FrameCodec.serializeAndRecycle:(Lorg/glassfish/grizzly/http2/Http2Session;Ljava/util/List;)Lorg/glassfish/grizzly/Buffer;
astore 4
start local 4 2: goto 7
end local 4 StackMap locals:
StackMap stack:
3: aload 1
instanceof org.glassfish.grizzly.http2.frames.Http2Frame
ifeq 6
4: 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
checkcast org.glassfish.grizzly.http2.frames.Http2Frame
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 5: goto 7
end local 4 6: StackMap locals:
StackMap stack:
aload 1
astore 4
start local 4 7: 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;
aconst_null
aload 4
aload 2
aload 3
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
8: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 9 1 anyMessage TK;
0 9 2 completionHandler Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
0 9 3 messageCloner Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;
2 3 4 msg Ljava/lang/Object;
5 6 4 msg Ljava/lang/Object;
7 9 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 java.util.logging.Level.FINE:Ljava/util/logging/Level;
5: 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: 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 1
aload 3
invokeinterface org.glassfish.grizzly.Buffer.hasRemaining:()Z
ifne 12
aload 1
invokevirtual org.glassfish.grizzly.http2.Http2Stream.getUnflushedWritesCount:()I
iconst_1
if_icmpne 12
1: StackMap locals:
StackMap stack:
aload 3
ifnonnull 4
2: 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
3: return
4: StackMap locals:
StackMap stack:
invokestatic org.glassfish.grizzly.http2.frames.DataFrame.builder:()Lorg/glassfish/grizzly/http2/frames/DataFrame$DataFrameBuilder;
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
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;
invokevirtual org.glassfish.grizzly.http2.frames.DataFrame$DataFrameBuilder.build:()Lorg/glassfish/grizzly/http2/frames/DataFrame;
astore 7
start local 7 5: aload 2
ifnull 9
aload 2
invokeinterface java.util.List.isEmpty:()Z
ifne 9
6: aload 2
aload 7
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
7: aload 2
astore 8
start local 8 8: goto 10
end local 8 9: StackMap locals: org.glassfish.grizzly.http2.frames.DataFrame
StackMap stack:
aload 7
astore 8
start local 8 10: 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
11: return
end local 8 end local 7 12: StackMap locals:
StackMap stack:
aload 2
ifnull 14
aload 2
invokeinterface java.util.List.isEmpty:()Z
ifne 14
13: aload 0
aload 2
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.writeDownStream:(Ljava/util/List;)V
14: StackMap locals:
StackMap stack:
aload 3
invokeinterface org.glassfish.grizzly.Buffer.remaining:()I
istore 7
start local 7 15: aload 5
ifnull 17
16: 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
17: StackMap locals: int
StackMap stack:
new org.glassfish.grizzly.http2.Http2OutputQueueRecord
dup
aload 1
invokevirtual org.glassfish.grizzly.http2.Http2Stream.getId:()I
aload 3
aload 4
iload 6
invokespecial org.glassfish.grizzly.http2.Http2OutputQueueRecord.<init>:(ILorg/glassfish/grizzly/Buffer;Lorg/glassfish/grizzly/CompletionHandler;Z)V
astore 8
start local 8 18: 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
19: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
aload 8
invokevirtual org.glassfish.grizzly.http2.Http2OutputQueueRecord.isZeroSizeData:()Z
ifeq 20
iconst_1
goto 21
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.Http2OutputQueueRecord
StackMap stack: org.glassfish.grizzly.asyncqueue.TaskQueue
20: 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.Http2OutputQueueRecord
StackMap stack: org.glassfish.grizzly.asyncqueue.TaskQueue int
21: invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.reserveSpace:(I)I
pop
22: aload 0
invokevirtual org.glassfish.grizzly.http2.Http2SessionOutputSink.flushOutputQueue:()V
23: 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 24 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
0 24 1 stream Lorg/glassfish/grizzly/http2/Http2Stream;
0 24 2 headerFrames Ljava/util/List<Lorg/glassfish/grizzly/http2/frames/Http2Frame;>;
0 24 3 data Lorg/glassfish/grizzly/Buffer;
0 24 4 completionHandler Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
0 24 5 messageCloner Lorg/glassfish/grizzly/asyncqueue/MessageCloner<Lorg/glassfish/grizzly/Buffer;>;
0 24 6 isLast Z
5 12 7 dataFrame Lorg/glassfish/grizzly/http2/frames/DataFrame;
8 9 8 msg Ljava/lang/Object;
10 12 8 msg Ljava/lang/Object;
15 24 7 dataSize I
18 24 8 record Lorg/glassfish/grizzly/http2/Http2OutputQueueRecord;
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: goto 57
3: StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int top top 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 4: 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 5: aconst_null
astore 5
start local 5 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: iconst_0
istore 10
start local 10 11: goto 42
12: StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int int int int org.glassfish.grizzly.http2.AggrCompletionHandler org.glassfish.grizzly.CompletionHandler int int int int
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.Http2OutputQueueRecord
astore 11
start local 11 13: aload 11
ifnonnull 19
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} byteToTransfer={1} queueSizeToFree={2} queueSize={3}"
15: iconst_4
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 8
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_2
iload 9
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_3
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: iconst_1
istore 10
18: goto 43
19: StackMap locals: org.glassfish.grizzly.http2.Http2OutputQueueRecord
StackMap stack:
aload 11
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.Http2OutputQueueRecord.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.Http2OutputQueueRecord.isFinished:()Z
ifeq 28
25: aload 11
invokevirtual org.glassfish.grizzly.http2.Http2OutputQueueRecord.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.Http2OutputQueueRecord.getCompletionHandler:()Lorg/glassfish/grizzly/CompletionHandler;
astore 13
start local 13 30: aload 13
ifnull 42
31: aload 5
ifnull 34
32: aload 5
aload 13
iload 12
invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
33: goto 42
StackMap locals: org.glassfish.grizzly.CompletionHandler
StackMap stack:
34: aload 6
ifnonnull 38
35: aload 13
astore 6
36: iload 12
istore 7
37: goto 42
38: StackMap locals:
StackMap stack:
new org.glassfish.grizzly.http2.AggrCompletionHandler
dup
invokespecial org.glassfish.grizzly.http2.AggrCompletionHandler.<init>:()V
astore 5
39: aload 5
aload 6
iload 7
invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
40: aload 5
aload 13
iload 12
invokevirtual org.glassfish.grizzly.http2.AggrCompletionHandler.register:(Lorg/glassfish/grizzly/CompletionHandler;I)V
41: aload 5
astore 6
end local 13 end local 12 end local 11 42: StackMap locals:
StackMap stack:
iload 2
iload 8
if_icmple 43
iload 3
iload 9
if_icmpgt 12
43: StackMap locals:
StackMap stack:
iload 9
ifle 53
44: getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.$assertionsDisabled:Z
ifne 45
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.tmpFramesList:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 45
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
45: 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
46: 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
istore 11
start local 11 47: 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
48: iconst_1
istore 4
49: getstatic org.glassfish.grizzly.http2.Http2SessionOutputSink.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
50: ldc "Http2Session. Shrink connection window size by {0} bytes. Current connection window size is: {1}"
51: 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
52: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
end local 11 53: 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
54: iload 10
ifeq 56
55: goto 58
56: StackMap locals:
StackMap stack:
iload 1
iinc 1 1
i2l
invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(J)V
end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 3 end local 2 57: StackMap locals: org.glassfish.grizzly.http2.Http2SessionOutputSink int top top 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 58
aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.isEmpty:()Z
ifne 58
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 3
58: StackMap locals:
StackMap stack:
iload 4
ifeq 60
59: aload 0
getfield org.glassfish.grizzly.http2.Http2SessionOutputSink.outputQueue:Lorg/glassfish/grizzly/asyncqueue/TaskQueue;
invokevirtual org.glassfish.grizzly.asyncqueue.TaskQueue.doNotify:()V
60: StackMap locals:
StackMap stack:
return
end local 4 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 61 0 this Lorg/glassfish/grizzly/http2/Http2SessionOutputSink;
1 61 1 backoffDelay I
4 57 2 availWindowSize I
5 57 3 queueSize I
2 61 4 needToNotifyQueueManagement Z
6 57 5 completionHandlers Lorg/glassfish/grizzly/http2/AggrCompletionHandler;
7 57 6 writeCompletionHandler Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
8 57 7 writeCompletionHandlerBytes I
9 57 8 bytesToTransfer I
10 57 9 queueSizeToFree I
11 57 10 breakNow Z
13 42 11 record Lorg/glassfish/grizzly/http2/Http2OutputQueueRecord;
22 42 12 serializedBytes I
30 42 13 recordCompletionHandler Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/WriteResult;>;
47 53 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
InnerClasses:
public abstract MutableMaxQueueSize = org.glassfish.grizzly.asyncqueue.TaskQueue$MutableMaxQueueSize of org.glassfish.grizzly.asyncqueue.TaskQueue
org.glassfish.grizzly.http2.Http2SessionOutputSink$1
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