final class io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber<T> extends java.util.concurrent.atomic.AtomicInteger implements io.reactivex.FlowableSubscriber<T>, org.reactivestreams.Subscription, java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber
super_class: java.util.concurrent.atomic.AtomicInteger
{
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -2365647875069161133
final org.reactivestreams.Subscriber<? super io.reactivex.Flowable<T>> downstream;
descriptor: Lorg/reactivestreams/Subscriber;
flags: (0x0010) ACC_FINAL
Signature: Lorg/reactivestreams/Subscriber<-Lio/reactivex/Flowable<TT;>;>;
final long size;
descriptor: J
flags: (0x0010) ACC_FINAL
final java.util.concurrent.atomic.AtomicBoolean once;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0010) ACC_FINAL
final int bufferSize;
descriptor: I
flags: (0x0010) ACC_FINAL
long index;
descriptor: J
flags: (0x0000)
org.reactivestreams.Subscription upstream;
descriptor: Lorg/reactivestreams/Subscription;
flags: (0x0000)
io.reactivex.processors.UnicastProcessor<T> window;
descriptor: Lio/reactivex/processors/UnicastProcessor;
flags: (0x0000)
Signature: Lio/reactivex/processors/UnicastProcessor<TT;>;
void <init>(org.reactivestreams.Subscriber<? super io.reactivex.Flowable<T>>, long, );
descriptor: (Lorg/reactivestreams/Subscriber;JI)V
flags: (0x0000)
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
iconst_1
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
1: aload 0
aload 1
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.downstream:Lorg/reactivestreams/Subscriber;
2: aload 0
lload 2
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.size:J
3: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.once:Ljava/util/concurrent/atomic/AtomicBoolean;
4: aload 0
iload 4
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.bufferSize:I
5: return
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/reactivex/internal/operators/flowable/FlowableWindow$WindowExactSubscriber<TT;>;
0 6 1 actual Lorg/reactivestreams/Subscriber<-Lio/reactivex/Flowable<TT;>;>;
0 6 2 size J
0 6 4 bufferSize I
Signature: (Lorg/reactivestreams/Subscriber<-Lio/reactivex/Flowable<TT;>;>;JI)V
MethodParameters:
Name Flags
actual
size
bufferSize
public void onSubscribe(org.reactivestreams.Subscription);
descriptor: (Lorg/reactivestreams/Subscription;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.upstream:Lorg/reactivestreams/Subscription;
aload 1
invokestatic io.reactivex.internal.subscriptions.SubscriptionHelper.validate:(Lorg/reactivestreams/Subscription;Lorg/reactivestreams/Subscription;)Z
ifeq 3
1: aload 0
aload 1
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.upstream:Lorg/reactivestreams/Subscription;
2: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.downstream:Lorg/reactivestreams/Subscriber;
aload 0
invokeinterface org.reactivestreams.Subscriber.onSubscribe:(Lorg/reactivestreams/Subscription;)V
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/reactivex/internal/operators/flowable/FlowableWindow$WindowExactSubscriber<TT;>;
0 4 1 s Lorg/reactivestreams/Subscription;
MethodParameters:
Name Flags
s
public void onNext();
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.index:J
lstore 2
start local 2 1: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.window:Lio/reactivex/processors/UnicastProcessor;
astore 4
start local 4 2: lload 2
lconst_0
lcmp
ifne 7
3: aload 0
invokevirtual io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.getAndIncrement:()I
pop
4: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.bufferSize:I
aload 0
invokestatic io.reactivex.processors.UnicastProcessor.create:(ILjava/lang/Runnable;)Lio/reactivex/processors/UnicastProcessor;
astore 4
5: aload 0
aload 4
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.window:Lio/reactivex/processors/UnicastProcessor;
6: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.downstream:Lorg/reactivestreams/Subscriber;
aload 4
invokeinterface org.reactivestreams.Subscriber.onNext:(Ljava/lang/Object;)V
7: StackMap locals: long io.reactivex.processors.UnicastProcessor
StackMap stack:
lload 2
lconst_1
ladd
lstore 2
8: aload 4
aload 1
invokevirtual io.reactivex.processors.UnicastProcessor.onNext:(Ljava/lang/Object;)V
9: lload 2
aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.size:J
lcmp
ifne 14
10: aload 0
lconst_0
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.index:J
11: aload 0
aconst_null
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.window:Lio/reactivex/processors/UnicastProcessor;
12: aload 4
invokevirtual io.reactivex.processors.UnicastProcessor.onComplete:()V
13: goto 15
14: StackMap locals:
StackMap stack:
aload 0
lload 2
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.index:J
15: StackMap locals:
StackMap stack:
return
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lio/reactivex/internal/operators/flowable/FlowableWindow$WindowExactSubscriber<TT;>;
0 16 1 t TT;
1 16 2 i J
2 16 4 w Lio/reactivex/processors/UnicastProcessor<TT;>;
Signature: (TT;)V
MethodParameters:
Name Flags
t
public void onError(java.lang.Throwable);
descriptor: (Ljava/lang/Throwable;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.window:Lio/reactivex/processors/UnicastProcessor;
astore 2
start local 2 1: aload 2
ifnull 4
2: aload 0
aconst_null
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.window:Lio/reactivex/processors/UnicastProcessor;
3: aload 2
aload 1
invokeinterface org.reactivestreams.Processor.onError:(Ljava/lang/Throwable;)V
4: StackMap locals: org.reactivestreams.Processor
StackMap stack:
aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.downstream:Lorg/reactivestreams/Subscriber;
aload 1
invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/reactivex/internal/operators/flowable/FlowableWindow$WindowExactSubscriber<TT;>;
0 6 1 t Ljava/lang/Throwable;
1 6 2 w Lorg/reactivestreams/Processor<TT;TT;>;
MethodParameters:
Name Flags
t
public void onComplete();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.window:Lio/reactivex/processors/UnicastProcessor;
astore 1
start local 1 1: aload 1
ifnull 4
2: aload 0
aconst_null
putfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.window:Lio/reactivex/processors/UnicastProcessor;
3: aload 1
invokeinterface org.reactivestreams.Processor.onComplete:()V
4: StackMap locals: org.reactivestreams.Processor
StackMap stack:
aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.downstream:Lorg/reactivestreams/Subscriber;
invokeinterface org.reactivestreams.Subscriber.onComplete:()V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/reactivex/internal/operators/flowable/FlowableWindow$WindowExactSubscriber<TT;>;
1 6 1 w Lorg/reactivestreams/Processor<TT;TT;>;
public void request(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: lload 1
invokestatic io.reactivex.internal.subscriptions.SubscriptionHelper.validate:(J)Z
ifeq 3
1: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.size:J
lload 1
invokestatic io.reactivex.internal.util.BackpressureHelper.multiplyCap:(JJ)J
lstore 3
start local 3 2: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.upstream:Lorg/reactivestreams/Subscription;
lload 3
invokeinterface org.reactivestreams.Subscription.request:(J)V
end local 3 3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/reactivex/internal/operators/flowable/FlowableWindow$WindowExactSubscriber<TT;>;
0 4 1 n J
2 3 3 u J
MethodParameters:
Name Flags
n
public void cancel();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.once:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 2
1: aload 0
invokevirtual io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.run:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/reactivex/internal/operators/flowable/FlowableWindow$WindowExactSubscriber<TT;>;
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.decrementAndGet:()I
ifne 2
1: aload 0
getfield io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber.upstream:Lorg/reactivestreams/Subscription;
invokeinterface org.reactivestreams.Subscription.cancel:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/reactivex/internal/operators/flowable/FlowableWindow$WindowExactSubscriber<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/util/concurrent/atomic/AtomicInteger;Lio/reactivex/FlowableSubscriber<TT;>;Lorg/reactivestreams/Subscription;Ljava/lang/Runnable;
SourceFile: "FlowableWindow.java"
NestHost: io.reactivex.internal.operators.flowable.FlowableWindow
InnerClasses:
final WindowExactSubscriber = io.reactivex.internal.operators.flowable.FlowableWindow$WindowExactSubscriber of io.reactivex.internal.operators.flowable.FlowableWindow