public class io.smallrye.mutiny.subscription.UniSerializedSubscriber extends java.lang.Object implements io.smallrye.mutiny.subscription.UniSubscriber, io.smallrye.mutiny.subscription.UniSubscription
{
private static final int INIT;
private static final int SUBSCRIBED;
private static final int HAS_SUBSCRIPTION;
private static final int DONE;
private final java.util.concurrent.atomic.AtomicInteger state;
private final io.smallrye.mutiny.operators.AbstractUni upstream;
private final io.smallrye.mutiny.subscription.UniSubscriber downstream;
private volatile io.smallrye.mutiny.subscription.UniSubscription subscription;
private final java.util.concurrent.atomic.AtomicReference failure;
public void <init>(io.smallrye.mutiny.operators.AbstractUni, io.smallrye.mutiny.subscription.UniSubscriber)
{
io.smallrye.mutiny.operators.AbstractUni v;
io.smallrye.mutiny.subscription.UniSerializedSubscriber v;
java.util.concurrent.atomic.AtomicInteger v;
java.lang.Object v, v;
io.smallrye.mutiny.subscription.UniSubscriber v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: io.smallrye.mutiny.subscription.UniSerializedSubscriber;
v := @parameter: io.smallrye.mutiny.operators.AbstractUni;
v := @parameter: io.smallrye.mutiny.subscription.UniSubscriber;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>(int)>(0);
v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state> = v;
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>()>();
v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicReference failure> = v;
v = staticinvoke <io.smallrye.mutiny.helpers.ParameterValidation: java.lang.Object nonNull(java.lang.Object,java.lang.String)>(v, "source");
v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.operators.AbstractUni upstream> = v;
v = staticinvoke <io.smallrye.mutiny.helpers.ParameterValidation: java.lang.Object nonNull(java.lang.Object,java.lang.String)>(v, "subscriber` must not be `null`");
v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscriber downstream> = v;
return;
}
public static void subscribe(io.smallrye.mutiny.operators.AbstractUni, io.smallrye.mutiny.subscription.UniSubscriber)
{
io.smallrye.mutiny.operators.AbstractUni v;
io.smallrye.mutiny.subscription.UniSerializedSubscriber v;
io.smallrye.mutiny.subscription.UniSubscriber v, v;
v := @parameter: io.smallrye.mutiny.operators.AbstractUni;
v := @parameter: io.smallrye.mutiny.subscription.UniSubscriber;
v = staticinvoke <io.smallrye.mutiny.infrastructure.Infrastructure: io.smallrye.mutiny.subscription.UniSubscriber onUniSubscription(io.smallrye.mutiny.Uni,io.smallrye.mutiny.subscription.UniSubscriber)>(v, v);
v = new io.smallrye.mutiny.subscription.UniSerializedSubscriber;
specialinvoke v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: void <init>(io.smallrye.mutiny.operators.AbstractUni,io.smallrye.mutiny.subscription.UniSubscriber)>(v, v);
specialinvoke v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: void subscribe()>();
return;
}
private void subscribe()
{
io.smallrye.mutiny.operators.AbstractUni v;
io.smallrye.mutiny.subscription.UniSerializedSubscriber v;
java.util.concurrent.atomic.AtomicInteger v;
boolean v;
v := @this: io.smallrye.mutiny.subscription.UniSerializedSubscriber;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(0, 1);
if v == 0 goto label;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.operators.AbstractUni upstream>;
virtualinvoke v.<io.smallrye.mutiny.operators.AbstractUni: void subscribe(io.smallrye.mutiny.subscription.UniSubscriber)>(v);
label:
return;
}
public io.smallrye.mutiny.Context context()
{
io.smallrye.mutiny.subscription.UniSerializedSubscriber v;
io.smallrye.mutiny.subscription.UniSubscriber v;
io.smallrye.mutiny.Context v;
v := @this: io.smallrye.mutiny.subscription.UniSerializedSubscriber;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscriber downstream>;
v = interfaceinvoke v.<io.smallrye.mutiny.subscription.UniSubscriber: io.smallrye.mutiny.Context context()>();
return v;
}
public void onSubscribe(io.smallrye.mutiny.subscription.UniSubscription)
{
io.smallrye.mutiny.subscription.UniSubscription v;
java.lang.IllegalStateException v;
io.smallrye.mutiny.subscription.UniSubscriber v, v, v, v;
java.util.concurrent.atomic.AtomicReference v;
io.smallrye.mutiny.subscription.UniSerializedSubscriber v;
java.util.concurrent.atomic.AtomicInteger v, v, v;
int v;
java.lang.Object v;
java.lang.String v;
boolean v;
v := @this: io.smallrye.mutiny.subscription.UniSerializedSubscriber;
v := @parameter: io.smallrye.mutiny.subscription.UniSubscription;
staticinvoke <io.smallrye.mutiny.helpers.ParameterValidation: java.lang.Object nonNull(java.lang.Object,java.lang.String)>(v, "subscription");
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(1, 2);
if v == 0 goto label;
v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscription subscription> = v;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscriber downstream>;
interfaceinvoke v.<io.smallrye.mutiny.subscription.UniSubscriber: void onSubscribe(io.smallrye.mutiny.subscription.UniSubscription)>(v);
goto label;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v != 3 goto label;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicReference failure>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object getAndSet(java.lang.Object)>(null);
if v == null goto label;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscriber downstream>;
interfaceinvoke v.<io.smallrye.mutiny.subscription.UniSubscriber: void onSubscribe(io.smallrye.mutiny.subscription.UniSubscription)>(v);
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscriber downstream>;
interfaceinvoke v.<io.smallrye.mutiny.subscription.UniSubscriber: void onFailure(java.lang.Throwable)>(v);
goto label;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscriber downstream>;
v = new java.lang.IllegalStateException;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.util.concurrent.atomic.AtomicInteger)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Invalid transition, expected to be in the SUBSCRIBED state but was in \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
staticinvoke <io.smallrye.mutiny.helpers.EmptyUniSubscription: void propagateFailureEvent(io.smallrye.mutiny.subscription.UniSubscriber,java.lang.Throwable)>(v, v);
label:
return;
}
public void onItem(java.lang.Object)
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
io.smallrye.mutiny.subscription.UniSubscriber v;
java.util.concurrent.atomic.AtomicReference v;
io.smallrye.mutiny.subscription.UniSerializedSubscriber v;
java.util.concurrent.atomic.AtomicInteger v, v;
java.lang.Object v;
java.lang.String v;
boolean v, v;
v := @this: io.smallrye.mutiny.subscription.UniSerializedSubscriber;
v := @parameter: java.lang.Object;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(2, 3);
if v == 0 goto label;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscriber downstream>;
interfaceinvoke v.<io.smallrye.mutiny.subscription.UniSubscriber: void onItem(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
staticinvoke <io.smallrye.mutiny.infrastructure.Infrastructure: void handleDroppedException(java.lang.Throwable)>(v);
throw v;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(1, 3);
if v == 0 goto label;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicReference failure>;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Object)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Invalid transition, expected to be in the HAS_SUBSCRIPTION states but was in SUBSCRIBED and received onItem(\u)");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: void set(java.lang.Object)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void onFailure(java.lang.Throwable)
{
java.lang.Throwable v, v;
io.smallrye.mutiny.subscription.UniSubscriber v;
java.util.concurrent.atomic.AtomicReference v;
io.smallrye.mutiny.CompositeException v;
io.smallrye.mutiny.subscription.UniSerializedSubscriber v;
java.util.concurrent.atomic.AtomicInteger v, v;
java.lang.Throwable[] v;
boolean v, v;
v := @this: io.smallrye.mutiny.subscription.UniSerializedSubscriber;
v := @parameter: java.lang.Throwable;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(2, 3);
if v == 0 goto label;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscriber downstream>;
interfaceinvoke v.<io.smallrye.mutiny.subscription.UniSubscriber: void onFailure(java.lang.Throwable)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new io.smallrye.mutiny.CompositeException;
v = newarray (java.lang.Throwable)[2];
v[0] = v;
v[1] = v;
specialinvoke v.<io.smallrye.mutiny.CompositeException: void <init>(java.lang.Throwable[])>(v);
staticinvoke <io.smallrye.mutiny.infrastructure.Infrastructure: void handleDroppedException(java.lang.Throwable)>(v);
throw v;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(1, 3);
if v == 0 goto label;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicReference failure>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: void set(java.lang.Object)>(v);
goto label;
label:
staticinvoke <io.smallrye.mutiny.infrastructure.Infrastructure: void handleDroppedException(java.lang.Throwable)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void cancel()
{
io.smallrye.mutiny.subscription.UniSubscription v, v, v;
io.smallrye.mutiny.subscription.UniSerializedSubscriber v;
java.util.concurrent.atomic.AtomicInteger v, v;
boolean v;
v := @this: io.smallrye.mutiny.subscription.UniSerializedSubscriber;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: boolean compareAndSet(int,int)>(2, 3);
if v == 0 goto label;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscription subscription>;
if v != null goto label;
staticinvoke <java.lang.Thread: void onSpinWait()>();
goto label;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscription subscription>;
if v == null goto label;
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: io.smallrye.mutiny.subscription.UniSubscription subscription>;
interfaceinvoke v.<io.smallrye.mutiny.subscription.UniSubscription: void cancel()>();
goto label;
label:
v = v.<io.smallrye.mutiny.subscription.UniSerializedSubscriber: java.util.concurrent.atomic.AtomicInteger state>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(3);
label:
return;
}
}