diff options
Diffstat (limited to 'Rx.NET/System.Reactive.Linq/Reactive/Joins/Plan.cs')
-rw-r--r-- | Rx.NET/System.Reactive.Linq/Reactive/Joins/Plan.cs | 1169 |
1 files changed, 0 insertions, 1169 deletions
diff --git a/Rx.NET/System.Reactive.Linq/Reactive/Joins/Plan.cs b/Rx.NET/System.Reactive.Linq/Reactive/Joins/Plan.cs deleted file mode 100644 index 2c27a60..0000000 --- a/Rx.NET/System.Reactive.Linq/Reactive/Joins/Plan.cs +++ /dev/null @@ -1,1169 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. - -using System.Collections.Generic; - -namespace System.Reactive.Joins -{ - /// <summary> - /// Represents an execution plan for join patterns. - /// </summary> - /// <typeparam name="TResult">The type of the results produced by the plan.</typeparam> - public abstract class Plan<TResult> - { - internal Plan() - { - } - - internal abstract ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate); - - internal static JoinObserver<TSource> CreateObserver<TSource>( - Dictionary<object, IJoinObserver> externalSubscriptions, IObservable<TSource> observable, Action<Exception> onError) - { - var observer = default(JoinObserver<TSource>); - var nonGeneric = default(IJoinObserver); - if (!externalSubscriptions.TryGetValue(observable, out nonGeneric)) - { - observer = new JoinObserver<TSource>(observable, onError); - externalSubscriptions.Add(observable, observer); - } - else - { - observer = (JoinObserver<TSource>) nonGeneric; - } - return observer; - } - } - - internal class Plan<T1, TResult> : Plan<TResult> - { - internal Pattern<T1> Expression { get; private set; } - - internal Func<T1, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1> expression, Func<T1, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var activePlan = default(ActivePlan<T1>); - - activePlan = new ActivePlan<T1>(firstJoinObserver, - first => - { - var result = default(TResult); - try - { - result = Selector(first); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, TResult> : Plan<TResult> - { - internal Pattern<T1, T2> Expression { get; private set; } - - internal Func<T1, T2, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2> expression, Func<T1, T2, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var activePlan = default(ActivePlan<T1, T2>); - - activePlan = new ActivePlan<T1, T2>(firstJoinObserver, secondJoinObserver, - (first, second) => - { - var result = default(TResult); - try - { - result = Selector(first, second); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3> Expression { get; private set; } - - internal Func<T1, T2, T3, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3> expression, Func<T1, T2, T3, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var activePlan = default(ActivePlan<T1, T2, T3>); - - activePlan = new ActivePlan<T1, T2, T3>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - (first, second, third) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, T4, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4> expression, - Func<T1, T2, T3, T4, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var activePlan = default(ActivePlan<T1, T2, T3, T4>); - - activePlan = new ActivePlan<T1, T2, T3, T4>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, fourthJoinObserver, - (first, second, third, fourth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - -#if !NO_LARGEARITY - internal class Plan<T1, T2, T3, T4, T5, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5> expression, - Func<T1, T2, T3, T4, T5, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, fourthJoinObserver, fifthJoinObserver, - (first, second, third, fourth, fifth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, T4, T5, T6, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6> expression, - Func<T1, T2, T3, T4, T5, T6, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, - (first, second, third, fourth, fifth, sixth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7> expression, - Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.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); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> Selector { get; private set; } - - 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; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - 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; - } - } - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> expression, - Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.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); - ninthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> expression, - Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.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); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> expression, - Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver,eleventhJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.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); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> expression, - Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.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); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> expression, - Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); - - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, thirteenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - thirteenthJoinObserver.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); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - thirteenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> expression, - Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); - var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); - - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>( - firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, - seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, - tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, thirteenthJoinObserver, - fourteenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - thirteenthJoinObserver.RemoveActivePlan(activePlan); - fourteenthJoinObserver.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); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - thirteenthJoinObserver.AddActivePlan(activePlan); - fourteenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> expression, - Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); - var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); - var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError); - - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>( - firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, - seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, - tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, thirteenthJoinObserver, - fourteenthJoinObserver, fifteenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - thirteenthJoinObserver.RemoveActivePlan(activePlan); - fourteenthJoinObserver.RemoveActivePlan(activePlan); - fifteenthJoinObserver.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); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - thirteenthJoinObserver.AddActivePlan(activePlan); - fourteenthJoinObserver.AddActivePlan(activePlan); - fifteenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> : Plan<TResult> - { - internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Expression { get; private set; } - - internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Selector { get; private set; } - - internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> expression, - Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, - IObserver<TResult> observer, Action<ActivePlan> deactivate) - { - var onError = new Action<Exception>(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); - var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); - var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError); - var sixteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixteenth, onError); - - var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>); - - activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>( - firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, - seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, - tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, thirteenthJoinObserver, - fourteenthJoinObserver, fifteenthJoinObserver, - sixteenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - thirteenthJoinObserver.RemoveActivePlan(activePlan); - fourteenthJoinObserver.RemoveActivePlan(activePlan); - fifteenthJoinObserver.RemoveActivePlan(activePlan); - sixteenthJoinObserver.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); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - thirteenthJoinObserver.AddActivePlan(activePlan); - fourteenthJoinObserver.AddActivePlan(activePlan); - fifteenthJoinObserver.AddActivePlan(activePlan); - sixteenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } -#endif -}
\ No newline at end of file |