Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

1435 lines
56 KiB
C#

// 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
{
internal abstract class ActivePlan
{
Dictionary<IJoinObserver, IJoinObserver> joinObservers = new Dictionary<IJoinObserver, IJoinObserver>();
internal abstract void Match();
protected void AddJoinObserver(IJoinObserver joinObserver)
{
joinObservers.Add(joinObserver, joinObserver);
}
protected void Dequeue()
{
foreach (var joinObserver in joinObservers.Values)
joinObserver.Dequeue();
}
}
internal class ActivePlan<T1> : ActivePlan
{
private readonly Action<T1> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
internal ActivePlan(JoinObserver<T1> first, Action<T1> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
AddJoinObserver(first);
}
internal override void Match()
{
if (first.Queue.Count > 0)
{
var n1 = first.Queue.Peek();
if (n1.Kind == NotificationKind.OnCompleted)
onCompleted();
else
{
Dequeue();
onNext(n1.Value
);
}
}
}
}
internal class ActivePlan<T1, T2> : ActivePlan
{
private readonly Action<T1, T2> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, Action<T1, T2> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
AddJoinObserver(first);
AddJoinObserver(second);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3> : ActivePlan
{
private readonly Action<T1, T2, T3> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third, Action<T1, T2, T3> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4> : ActivePlan
{
private readonly Action<T1, T2, T3, T4> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third, JoinObserver<T4> fourth, Action<T1, T2, T3, T4> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value
);
}
}
}
}
#if !NO_LARGEARITY
internal class ActivePlan<T1, T2, T3, T4, T5> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, Action<T1, T2, T3, T4, T5> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth,
Action<T1, T2, T3, T4, T5, T6> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
Action<T1, T2, T3, T4, T5, T6, T7> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth,
Action<T1, T2, T3, T4, T5, T6, T7, T8> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
private readonly JoinObserver<T9> ninth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth, JoinObserver<T9> ninth,
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
this.ninth = ninth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
AddJoinObserver(ninth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0
&& ninth.Queue.Count > 0
)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
var n9 = ninth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
|| n9.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value,
n9.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
private readonly JoinObserver<T9> ninth;
private readonly JoinObserver<T10> tenth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth, JoinObserver<T9> ninth, JoinObserver<T10> tenth,
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
this.ninth = ninth;
this.tenth = tenth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
AddJoinObserver(ninth);
AddJoinObserver(tenth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0
&& ninth.Queue.Count > 0
&& tenth.Queue.Count > 0
)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
var n9 = ninth.Queue.Peek();
var n10 = tenth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
|| n9.Kind == NotificationKind.OnCompleted
|| n10.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value,
n9.Value,
n10.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
private readonly JoinObserver<T9> ninth;
private readonly JoinObserver<T10> tenth;
private readonly JoinObserver<T11> eleventh;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth, JoinObserver<T9> ninth, JoinObserver<T10> tenth, JoinObserver<T11> eleventh,
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
this.ninth = ninth;
this.tenth = tenth;
this.eleventh = eleventh;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
AddJoinObserver(ninth);
AddJoinObserver(tenth);
AddJoinObserver(eleventh);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0
&& ninth.Queue.Count > 0
&& tenth.Queue.Count > 0
&& eleventh.Queue.Count > 0
)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
var n9 = ninth.Queue.Peek();
var n10 = tenth.Queue.Peek();
var n11 = eleventh.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
|| n9.Kind == NotificationKind.OnCompleted
|| n10.Kind == NotificationKind.OnCompleted
|| n11.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value,
n9.Value,
n10.Value,
n11.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
private readonly JoinObserver<T9> ninth;
private readonly JoinObserver<T10> tenth;
private readonly JoinObserver<T11> eleventh;
private readonly JoinObserver<T12> twelfth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth, JoinObserver<T9> ninth, JoinObserver<T10> tenth, JoinObserver<T11> eleventh,
JoinObserver<T12> twelfth,
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
this.ninth = ninth;
this.tenth = tenth;
this.eleventh = eleventh;
this.twelfth = twelfth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
AddJoinObserver(ninth);
AddJoinObserver(tenth);
AddJoinObserver(eleventh);
AddJoinObserver(twelfth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0
&& ninth.Queue.Count > 0
&& tenth.Queue.Count > 0
&& eleventh.Queue.Count > 0
&& twelfth.Queue.Count > 0
)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
var n9 = ninth.Queue.Peek();
var n10 = tenth.Queue.Peek();
var n11 = eleventh.Queue.Peek();
var n12 = twelfth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
|| n9.Kind == NotificationKind.OnCompleted
|| n10.Kind == NotificationKind.OnCompleted
|| n11.Kind == NotificationKind.OnCompleted
|| n12.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value,
n9.Value,
n10.Value,
n11.Value,
n12.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
private readonly JoinObserver<T9> ninth;
private readonly JoinObserver<T10> tenth;
private readonly JoinObserver<T11> eleventh;
private readonly JoinObserver<T12> twelfth;
private readonly JoinObserver<T13> thirteenth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth, JoinObserver<T9> ninth, JoinObserver<T10> tenth, JoinObserver<T11> eleventh,
JoinObserver<T12> twelfth, JoinObserver<T13> thirteenth,
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
this.ninth = ninth;
this.tenth = tenth;
this.eleventh = eleventh;
this.twelfth = twelfth;
this.thirteenth = thirteenth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
AddJoinObserver(ninth);
AddJoinObserver(tenth);
AddJoinObserver(eleventh);
AddJoinObserver(twelfth);
AddJoinObserver(thirteenth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0
&& ninth.Queue.Count > 0
&& tenth.Queue.Count > 0
&& eleventh.Queue.Count > 0
&& twelfth.Queue.Count > 0
&& thirteenth.Queue.Count > 0
)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
var n9 = ninth.Queue.Peek();
var n10 = tenth.Queue.Peek();
var n11 = eleventh.Queue.Peek();
var n12 = twelfth.Queue.Peek();
var n13 = thirteenth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
|| n9.Kind == NotificationKind.OnCompleted
|| n10.Kind == NotificationKind.OnCompleted
|| n11.Kind == NotificationKind.OnCompleted
|| n12.Kind == NotificationKind.OnCompleted
|| n13.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value,
n9.Value,
n10.Value,
n11.Value,
n12.Value,
n13.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
private readonly JoinObserver<T9> ninth;
private readonly JoinObserver<T10> tenth;
private readonly JoinObserver<T11> eleventh;
private readonly JoinObserver<T12> twelfth;
private readonly JoinObserver<T13> thirteenth;
private readonly JoinObserver<T14> fourteenth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth, JoinObserver<T9> ninth, JoinObserver<T10> tenth, JoinObserver<T11> eleventh,
JoinObserver<T12> twelfth, JoinObserver<T13> thirteenth, JoinObserver<T14> fourteenth,
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
this.ninth = ninth;
this.tenth = tenth;
this.eleventh = eleventh;
this.twelfth = twelfth;
this.thirteenth = thirteenth;
this.fourteenth = fourteenth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
AddJoinObserver(ninth);
AddJoinObserver(tenth);
AddJoinObserver(eleventh);
AddJoinObserver(twelfth);
AddJoinObserver(thirteenth);
AddJoinObserver(fourteenth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0
&& ninth.Queue.Count > 0
&& tenth.Queue.Count > 0
&& eleventh.Queue.Count > 0
&& twelfth.Queue.Count > 0
&& thirteenth.Queue.Count > 0
&& fourteenth.Queue.Count > 0
)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
var n9 = ninth.Queue.Peek();
var n10 = tenth.Queue.Peek();
var n11 = eleventh.Queue.Peek();
var n12 = twelfth.Queue.Peek();
var n13 = thirteenth.Queue.Peek();
var n14 = fourteenth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
|| n9.Kind == NotificationKind.OnCompleted
|| n10.Kind == NotificationKind.OnCompleted
|| n11.Kind == NotificationKind.OnCompleted
|| n12.Kind == NotificationKind.OnCompleted
|| n13.Kind == NotificationKind.OnCompleted
|| n14.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value,
n9.Value,
n10.Value,
n11.Value,
n12.Value,
n13.Value,
n14.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
private readonly JoinObserver<T9> ninth;
private readonly JoinObserver<T10> tenth;
private readonly JoinObserver<T11> eleventh;
private readonly JoinObserver<T12> twelfth;
private readonly JoinObserver<T13> thirteenth;
private readonly JoinObserver<T14> fourteenth;
private readonly JoinObserver<T15> fifteenth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth, JoinObserver<T9> ninth, JoinObserver<T10> tenth, JoinObserver<T11> eleventh,
JoinObserver<T12> twelfth, JoinObserver<T13> thirteenth, JoinObserver<T14> fourteenth,
JoinObserver<T15> fifteenth,
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
this.ninth = ninth;
this.tenth = tenth;
this.eleventh = eleventh;
this.twelfth = twelfth;
this.thirteenth = thirteenth;
this.fourteenth = fourteenth;
this.fifteenth = fifteenth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
AddJoinObserver(ninth);
AddJoinObserver(tenth);
AddJoinObserver(eleventh);
AddJoinObserver(twelfth);
AddJoinObserver(thirteenth);
AddJoinObserver(fourteenth);
AddJoinObserver(fifteenth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0
&& ninth.Queue.Count > 0
&& tenth.Queue.Count > 0
&& eleventh.Queue.Count > 0
&& twelfth.Queue.Count > 0
&& thirteenth.Queue.Count > 0
&& fourteenth.Queue.Count > 0
&& fifteenth.Queue.Count > 0
)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
var n9 = ninth.Queue.Peek();
var n10 = tenth.Queue.Peek();
var n11 = eleventh.Queue.Peek();
var n12 = twelfth.Queue.Peek();
var n13 = thirteenth.Queue.Peek();
var n14 = fourteenth.Queue.Peek();
var n15 = fifteenth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
|| n9.Kind == NotificationKind.OnCompleted
|| n10.Kind == NotificationKind.OnCompleted
|| n11.Kind == NotificationKind.OnCompleted
|| n12.Kind == NotificationKind.OnCompleted
|| n13.Kind == NotificationKind.OnCompleted
|| n14.Kind == NotificationKind.OnCompleted
|| n15.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value,
n9.Value,
n10.Value,
n11.Value,
n12.Value,
n13.Value,
n14.Value,
n15.Value
);
}
}
}
}
internal class ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> : ActivePlan
{
private readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> onNext;
private readonly Action onCompleted;
private readonly JoinObserver<T1> first;
private readonly JoinObserver<T2> second;
private readonly JoinObserver<T3> third;
private readonly JoinObserver<T4> fourth;
private readonly JoinObserver<T5> fifth;
private readonly JoinObserver<T6> sixth;
private readonly JoinObserver<T7> seventh;
private readonly JoinObserver<T8> eighth;
private readonly JoinObserver<T9> ninth;
private readonly JoinObserver<T10> tenth;
private readonly JoinObserver<T11> eleventh;
private readonly JoinObserver<T12> twelfth;
private readonly JoinObserver<T13> thirteenth;
private readonly JoinObserver<T14> fourteenth;
private readonly JoinObserver<T15> fifteenth;
private readonly JoinObserver<T16> sixteenth;
internal ActivePlan(JoinObserver<T1> first, JoinObserver<T2> second, JoinObserver<T3> third,
JoinObserver<T4> fourth, JoinObserver<T5> fifth, JoinObserver<T6> sixth, JoinObserver<T7> seventh,
JoinObserver<T8> eighth, JoinObserver<T9> ninth, JoinObserver<T10> tenth, JoinObserver<T11> eleventh,
JoinObserver<T12> twelfth, JoinObserver<T13> thirteenth, JoinObserver<T14> fourteenth,
JoinObserver<T15> fifteenth, JoinObserver<T16> sixteenth,
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> onNext, Action onCompleted)
{
this.onNext = onNext;
this.onCompleted = onCompleted;
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
this.fifth = fifth;
this.sixth = sixth;
this.seventh = seventh;
this.eighth = eighth;
this.ninth = ninth;
this.tenth = tenth;
this.eleventh = eleventh;
this.twelfth = twelfth;
this.thirteenth = thirteenth;
this.fourteenth = fourteenth;
this.fifteenth = fifteenth;
this.sixteenth = sixteenth;
AddJoinObserver(first);
AddJoinObserver(second);
AddJoinObserver(third);
AddJoinObserver(fourth);
AddJoinObserver(fifth);
AddJoinObserver(sixth);
AddJoinObserver(seventh);
AddJoinObserver(eighth);
AddJoinObserver(ninth);
AddJoinObserver(tenth);
AddJoinObserver(eleventh);
AddJoinObserver(twelfth);
AddJoinObserver(thirteenth);
AddJoinObserver(fourteenth);
AddJoinObserver(fifteenth);
AddJoinObserver(sixteenth);
}
internal override void Match()
{
if (first.Queue.Count > 0
&& second.Queue.Count > 0
&& third.Queue.Count > 0
&& fourth.Queue.Count > 0
&& fifth.Queue.Count > 0
&& sixth.Queue.Count > 0
&& seventh.Queue.Count > 0
&& eighth.Queue.Count > 0
&& ninth.Queue.Count > 0
&& tenth.Queue.Count > 0
&& eleventh.Queue.Count > 0
&& twelfth.Queue.Count > 0
&& thirteenth.Queue.Count > 0
&& fourteenth.Queue.Count > 0
&& fifteenth.Queue.Count > 0
&& sixteenth.Queue.Count > 0
)
{
var n1 = first.Queue.Peek();
var n2 = second.Queue.Peek();
var n3 = third.Queue.Peek();
var n4 = fourth.Queue.Peek();
var n5 = fifth.Queue.Peek();
var n6 = sixth.Queue.Peek();
var n7 = seventh.Queue.Peek();
var n8 = eighth.Queue.Peek();
var n9 = ninth.Queue.Peek();
var n10 = tenth.Queue.Peek();
var n11 = eleventh.Queue.Peek();
var n12 = twelfth.Queue.Peek();
var n13 = thirteenth.Queue.Peek();
var n14 = fourteenth.Queue.Peek();
var n15 = fifteenth.Queue.Peek();
var n16 = sixteenth.Queue.Peek();
if ( n1.Kind == NotificationKind.OnCompleted
|| n2.Kind == NotificationKind.OnCompleted
|| n3.Kind == NotificationKind.OnCompleted
|| n4.Kind == NotificationKind.OnCompleted
|| n5.Kind == NotificationKind.OnCompleted
|| n6.Kind == NotificationKind.OnCompleted
|| n7.Kind == NotificationKind.OnCompleted
|| n8.Kind == NotificationKind.OnCompleted
|| n9.Kind == NotificationKind.OnCompleted
|| n10.Kind == NotificationKind.OnCompleted
|| n11.Kind == NotificationKind.OnCompleted
|| n12.Kind == NotificationKind.OnCompleted
|| n13.Kind == NotificationKind.OnCompleted
|| n14.Kind == NotificationKind.OnCompleted
|| n15.Kind == NotificationKind.OnCompleted
|| n16.Kind == NotificationKind.OnCompleted
)
onCompleted();
else
{
Dequeue();
onNext(n1.Value,
n2.Value,
n3.Value,
n4.Value,
n5.Value,
n6.Value,
n7.Value,
n8.Value,
n9.Value,
n10.Value,
n11.Value,
n12.Value,
n13.Value,
n14.Value,
n15.Value,
n16.Value
);
}
}
}
}
#endif
}