Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult>
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace System.Reactive.Joins
{
[System.Runtime.CompilerServices.NullableContext(2)]
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
internal sealed class Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult> : Plan<TResult>
{
[System.Runtime.CompilerServices.Nullable(1)]
[field: System.Runtime.CompilerServices.Nullable(1)]
internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8> Expression {
[System.Runtime.CompilerServices.NullableContext(1)]
get;
}
[System.Runtime.CompilerServices.Nullable(1)]
[field: System.Runtime.CompilerServices.Nullable(1)]
internal Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> Selector {
[System.Runtime.CompilerServices.NullableContext(1)]
get;
}
[System.Runtime.CompilerServices.NullableContext(1)]
internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8> expression, Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
{
Expression = expression;
Selector = selector;
}
[System.Runtime.CompilerServices.NullableContext(1)]
internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, IObserver<TResult> observer, Action<ActivePlan> deactivate)
{
IObserver<TResult> observer2 = observer;
Action<Exception> onError = observer2.OnError;
JoinObserver<T1> firstJoinObserver = Plan<TResult>.CreateObserver(externalSubscriptions, Expression.First, onError);
JoinObserver<T2> secondJoinObserver = Plan<TResult>.CreateObserver(externalSubscriptions, Expression.Second, onError);
JoinObserver<T3> thirdJoinObserver = Plan<TResult>.CreateObserver(externalSubscriptions, Expression.Third, onError);
JoinObserver<T4> fourthJoinObserver = Plan<TResult>.CreateObserver(externalSubscriptions, Expression.Fourth, onError);
JoinObserver<T5> fifthJoinObserver = Plan<TResult>.CreateObserver(externalSubscriptions, Expression.Fifth, onError);
JoinObserver<T6> sixthJoinObserver = Plan<TResult>.CreateObserver(externalSubscriptions, Expression.Sixth, onError);
JoinObserver<T7> seventhJoinObserver = Plan<TResult>.CreateObserver(externalSubscriptions, Expression.Seventh, onError);
JoinObserver<T8> eighthJoinObserver = Plan<TResult>.CreateObserver(externalSubscriptions, Expression.Eighth, onError);
ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8> activePlan = null;
activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, delegate(T1 first, T2 second, T3 third, T4 fourth, T5 fifth, T6 sixth, T7 seventh, T8 eighth) {
TResult value;
try {
value = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth);
} catch (Exception error) {
observer.OnError(error);
return;
}
observer.OnNext(value);
}, delegate {
firstJoinObserver.RemoveActivePlan(activePlan);
secondJoinObserver.RemoveActivePlan(activePlan);
thirdJoinObserver.RemoveActivePlan(activePlan);
fourthJoinObserver.RemoveActivePlan(activePlan);
fifthJoinObserver.RemoveActivePlan(activePlan);
sixthJoinObserver.RemoveActivePlan(activePlan);
seventhJoinObserver.RemoveActivePlan(activePlan);
eighthJoinObserver.RemoveActivePlan(activePlan);
deactivate(activePlan);
});
firstJoinObserver.AddActivePlan(activePlan);
secondJoinObserver.AddActivePlan(activePlan);
thirdJoinObserver.AddActivePlan(activePlan);
fourthJoinObserver.AddActivePlan(activePlan);
fifthJoinObserver.AddActivePlan(activePlan);
sixthJoinObserver.AddActivePlan(activePlan);
seventhJoinObserver.AddActivePlan(activePlan);
eighthJoinObserver.AddActivePlan(activePlan);
return activePlan;
}
}
}