PageRenderTime 33ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/System.Reactive/System.Reactive.Joins/System.Reactive.Joins.generated.cs

https://github.com/gshackles/mono-reactive
C# | 2489 lines | 2137 code | 346 blank | 6 comment | 1630 complexity | 0af2e3ecbc481ef17c659e45acba4bab MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Reactive;
  6. using System.Reactive.Disposables;
  7. using System.Reactive.Linq;
  8. using System.Reactive.Subjects;
  9. namespace System.Reactive.Joins
  10. {
  11. public class Pattern<T1, T2> : Pattern
  12. {
  13. internal Pattern (IObservable<T1> t1, IObservable<T2> t2)
  14. {
  15. this.t1 = t1;
  16. this.t2 = t2;
  17. }
  18. IObservable<T1> t1;
  19. IObservable<T2> t2;
  20. public Pattern<T1, T2, T3> And<T3> (IObservable<T3> other)
  21. {
  22. return new Pattern<T1, T2, T3> (t1, t2, other);
  23. }
  24. public Plan<TResult> Then<TResult> (Func<T1, T2, TResult> selector)
  25. {
  26. return new Plan<T1, T2, TResult> (this, selector);
  27. }
  28. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, TResult> selector)
  29. {
  30. var sub = new Subject<TResult> ();
  31. bool [] done = new bool [2];
  32. var q1 = new Queue<T1> ();
  33. var q2 = new Queue<T2> ();
  34. t1.Subscribe (Observer.Create<T1> (t => {
  35. q1.Enqueue (t);
  36. if (q1.Count > 0 && q2.Count > 0)
  37. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue ()));
  38. }, (ex) => sub.OnError (ex), () => {
  39. done [0] = true;
  40. if (done.All (b => b))
  41. sub.OnCompleted ();
  42. }));
  43. t2.Subscribe (Observer.Create<T2> (t => {
  44. q2.Enqueue (t);
  45. if (q1.Count > 0 && q2.Count > 0)
  46. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue ()));
  47. }, (ex) => sub.OnError (ex), () => {
  48. done [1] = true;
  49. if (done.All (b => b))
  50. sub.OnCompleted ();
  51. }));
  52. return sub;
  53. }
  54. }
  55. internal class Plan<T1, T2, TResult> : Plan<TResult>
  56. {
  57. Pattern<T1, T2> pattern;
  58. Func<T1, T2, TResult> selector;
  59. public Plan (Pattern<T1, T2> pattern, Func<T1, T2, TResult> selector)
  60. {
  61. this.pattern = pattern;
  62. this.selector = selector;
  63. }
  64. internal override IObservable<TResult> AsObservable ()
  65. {
  66. return pattern.AsObservable<TResult> (selector);
  67. }
  68. }
  69. public class Pattern<T1, T2, T3> : Pattern
  70. {
  71. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3)
  72. {
  73. this.t1 = t1;
  74. this.t2 = t2;
  75. this.t3 = t3;
  76. }
  77. IObservable<T1> t1;
  78. IObservable<T2> t2;
  79. IObservable<T3> t3;
  80. public Pattern<T1, T2, T3, T4> And<T4> (IObservable<T4> other)
  81. {
  82. return new Pattern<T1, T2, T3, T4> (t1, t2, t3, other);
  83. }
  84. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, TResult> selector)
  85. {
  86. return new Plan<T1, T2, T3, TResult> (this, selector);
  87. }
  88. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, TResult> selector)
  89. {
  90. var sub = new Subject<TResult> ();
  91. bool [] done = new bool [3];
  92. var q1 = new Queue<T1> ();
  93. var q2 = new Queue<T2> ();
  94. var q3 = new Queue<T3> ();
  95. t1.Subscribe (Observer.Create<T1> (t => {
  96. q1.Enqueue (t);
  97. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0)
  98. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue ()));
  99. }, (ex) => sub.OnError (ex), () => {
  100. done [0] = true;
  101. if (done.All (b => b))
  102. sub.OnCompleted ();
  103. }));
  104. t2.Subscribe (Observer.Create<T2> (t => {
  105. q2.Enqueue (t);
  106. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0)
  107. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue ()));
  108. }, (ex) => sub.OnError (ex), () => {
  109. done [1] = true;
  110. if (done.All (b => b))
  111. sub.OnCompleted ();
  112. }));
  113. t3.Subscribe (Observer.Create<T3> (t => {
  114. q3.Enqueue (t);
  115. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0)
  116. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue ()));
  117. }, (ex) => sub.OnError (ex), () => {
  118. done [2] = true;
  119. if (done.All (b => b))
  120. sub.OnCompleted ();
  121. }));
  122. return sub;
  123. }
  124. }
  125. internal class Plan<T1, T2, T3, TResult> : Plan<TResult>
  126. {
  127. Pattern<T1, T2, T3> pattern;
  128. Func<T1, T2, T3, TResult> selector;
  129. public Plan (Pattern<T1, T2, T3> pattern, Func<T1, T2, T3, TResult> selector)
  130. {
  131. this.pattern = pattern;
  132. this.selector = selector;
  133. }
  134. internal override IObservable<TResult> AsObservable ()
  135. {
  136. return pattern.AsObservable<TResult> (selector);
  137. }
  138. }
  139. public class Pattern<T1, T2, T3, T4> : Pattern
  140. {
  141. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4)
  142. {
  143. this.t1 = t1;
  144. this.t2 = t2;
  145. this.t3 = t3;
  146. this.t4 = t4;
  147. }
  148. IObservable<T1> t1;
  149. IObservable<T2> t2;
  150. IObservable<T3> t3;
  151. IObservable<T4> t4;
  152. public Pattern<T1, T2, T3, T4, T5> And<T5> (IObservable<T5> other)
  153. {
  154. return new Pattern<T1, T2, T3, T4, T5> (t1, t2, t3, t4, other);
  155. }
  156. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, TResult> selector)
  157. {
  158. return new Plan<T1, T2, T3, T4, TResult> (this, selector);
  159. }
  160. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, TResult> selector)
  161. {
  162. var sub = new Subject<TResult> ();
  163. bool [] done = new bool [4];
  164. var q1 = new Queue<T1> ();
  165. var q2 = new Queue<T2> ();
  166. var q3 = new Queue<T3> ();
  167. var q4 = new Queue<T4> ();
  168. t1.Subscribe (Observer.Create<T1> (t => {
  169. q1.Enqueue (t);
  170. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0)
  171. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue ()));
  172. }, (ex) => sub.OnError (ex), () => {
  173. done [0] = true;
  174. if (done.All (b => b))
  175. sub.OnCompleted ();
  176. }));
  177. t2.Subscribe (Observer.Create<T2> (t => {
  178. q2.Enqueue (t);
  179. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0)
  180. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue ()));
  181. }, (ex) => sub.OnError (ex), () => {
  182. done [1] = true;
  183. if (done.All (b => b))
  184. sub.OnCompleted ();
  185. }));
  186. t3.Subscribe (Observer.Create<T3> (t => {
  187. q3.Enqueue (t);
  188. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0)
  189. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue ()));
  190. }, (ex) => sub.OnError (ex), () => {
  191. done [2] = true;
  192. if (done.All (b => b))
  193. sub.OnCompleted ();
  194. }));
  195. t4.Subscribe (Observer.Create<T4> (t => {
  196. q4.Enqueue (t);
  197. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0)
  198. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue ()));
  199. }, (ex) => sub.OnError (ex), () => {
  200. done [3] = true;
  201. if (done.All (b => b))
  202. sub.OnCompleted ();
  203. }));
  204. return sub;
  205. }
  206. }
  207. internal class Plan<T1, T2, T3, T4, TResult> : Plan<TResult>
  208. {
  209. Pattern<T1, T2, T3, T4> pattern;
  210. Func<T1, T2, T3, T4, TResult> selector;
  211. public Plan (Pattern<T1, T2, T3, T4> pattern, Func<T1, T2, T3, T4, TResult> selector)
  212. {
  213. this.pattern = pattern;
  214. this.selector = selector;
  215. }
  216. internal override IObservable<TResult> AsObservable ()
  217. {
  218. return pattern.AsObservable<TResult> (selector);
  219. }
  220. }
  221. public class Pattern<T1, T2, T3, T4, T5> : Pattern
  222. {
  223. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5)
  224. {
  225. this.t1 = t1;
  226. this.t2 = t2;
  227. this.t3 = t3;
  228. this.t4 = t4;
  229. this.t5 = t5;
  230. }
  231. IObservable<T1> t1;
  232. IObservable<T2> t2;
  233. IObservable<T3> t3;
  234. IObservable<T4> t4;
  235. IObservable<T5> t5;
  236. public Pattern<T1, T2, T3, T4, T5, T6> And<T6> (IObservable<T6> other)
  237. {
  238. return new Pattern<T1, T2, T3, T4, T5, T6> (t1, t2, t3, t4, t5, other);
  239. }
  240. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, TResult> selector)
  241. {
  242. return new Plan<T1, T2, T3, T4, T5, TResult> (this, selector);
  243. }
  244. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, TResult> selector)
  245. {
  246. var sub = new Subject<TResult> ();
  247. bool [] done = new bool [5];
  248. var q1 = new Queue<T1> ();
  249. var q2 = new Queue<T2> ();
  250. var q3 = new Queue<T3> ();
  251. var q4 = new Queue<T4> ();
  252. var q5 = new Queue<T5> ();
  253. t1.Subscribe (Observer.Create<T1> (t => {
  254. q1.Enqueue (t);
  255. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  256. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  257. }, (ex) => sub.OnError (ex), () => {
  258. done [0] = true;
  259. if (done.All (b => b))
  260. sub.OnCompleted ();
  261. }));
  262. t2.Subscribe (Observer.Create<T2> (t => {
  263. q2.Enqueue (t);
  264. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  265. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  266. }, (ex) => sub.OnError (ex), () => {
  267. done [1] = true;
  268. if (done.All (b => b))
  269. sub.OnCompleted ();
  270. }));
  271. t3.Subscribe (Observer.Create<T3> (t => {
  272. q3.Enqueue (t);
  273. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  274. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  275. }, (ex) => sub.OnError (ex), () => {
  276. done [2] = true;
  277. if (done.All (b => b))
  278. sub.OnCompleted ();
  279. }));
  280. t4.Subscribe (Observer.Create<T4> (t => {
  281. q4.Enqueue (t);
  282. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  283. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  284. }, (ex) => sub.OnError (ex), () => {
  285. done [3] = true;
  286. if (done.All (b => b))
  287. sub.OnCompleted ();
  288. }));
  289. t5.Subscribe (Observer.Create<T5> (t => {
  290. q5.Enqueue (t);
  291. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  292. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  293. }, (ex) => sub.OnError (ex), () => {
  294. done [4] = true;
  295. if (done.All (b => b))
  296. sub.OnCompleted ();
  297. }));
  298. return sub;
  299. }
  300. }
  301. internal class Plan<T1, T2, T3, T4, T5, TResult> : Plan<TResult>
  302. {
  303. Pattern<T1, T2, T3, T4, T5> pattern;
  304. Func<T1, T2, T3, T4, T5, TResult> selector;
  305. public Plan (Pattern<T1, T2, T3, T4, T5> pattern, Func<T1, T2, T3, T4, T5, TResult> selector)
  306. {
  307. this.pattern = pattern;
  308. this.selector = selector;
  309. }
  310. internal override IObservable<TResult> AsObservable ()
  311. {
  312. return pattern.AsObservable<TResult> (selector);
  313. }
  314. }
  315. public class Pattern<T1, T2, T3, T4, T5, T6> : Pattern
  316. {
  317. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6)
  318. {
  319. this.t1 = t1;
  320. this.t2 = t2;
  321. this.t3 = t3;
  322. this.t4 = t4;
  323. this.t5 = t5;
  324. this.t6 = t6;
  325. }
  326. IObservable<T1> t1;
  327. IObservable<T2> t2;
  328. IObservable<T3> t3;
  329. IObservable<T4> t4;
  330. IObservable<T5> t5;
  331. IObservable<T6> t6;
  332. public Pattern<T1, T2, T3, T4, T5, T6, T7> And<T7> (IObservable<T7> other)
  333. {
  334. return new Pattern<T1, T2, T3, T4, T5, T6, T7> (t1, t2, t3, t4, t5, t6, other);
  335. }
  336. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, TResult> selector)
  337. {
  338. return new Plan<T1, T2, T3, T4, T5, T6, TResult> (this, selector);
  339. }
  340. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, TResult> selector)
  341. {
  342. var sub = new Subject<TResult> ();
  343. bool [] done = new bool [6];
  344. var q1 = new Queue<T1> ();
  345. var q2 = new Queue<T2> ();
  346. var q3 = new Queue<T3> ();
  347. var q4 = new Queue<T4> ();
  348. var q5 = new Queue<T5> ();
  349. var q6 = new Queue<T6> ();
  350. t1.Subscribe (Observer.Create<T1> (t => {
  351. q1.Enqueue (t);
  352. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  353. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  354. }, (ex) => sub.OnError (ex), () => {
  355. done [0] = true;
  356. if (done.All (b => b))
  357. sub.OnCompleted ();
  358. }));
  359. t2.Subscribe (Observer.Create<T2> (t => {
  360. q2.Enqueue (t);
  361. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  362. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  363. }, (ex) => sub.OnError (ex), () => {
  364. done [1] = true;
  365. if (done.All (b => b))
  366. sub.OnCompleted ();
  367. }));
  368. t3.Subscribe (Observer.Create<T3> (t => {
  369. q3.Enqueue (t);
  370. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  371. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  372. }, (ex) => sub.OnError (ex), () => {
  373. done [2] = true;
  374. if (done.All (b => b))
  375. sub.OnCompleted ();
  376. }));
  377. t4.Subscribe (Observer.Create<T4> (t => {
  378. q4.Enqueue (t);
  379. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  380. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  381. }, (ex) => sub.OnError (ex), () => {
  382. done [3] = true;
  383. if (done.All (b => b))
  384. sub.OnCompleted ();
  385. }));
  386. t5.Subscribe (Observer.Create<T5> (t => {
  387. q5.Enqueue (t);
  388. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  389. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  390. }, (ex) => sub.OnError (ex), () => {
  391. done [4] = true;
  392. if (done.All (b => b))
  393. sub.OnCompleted ();
  394. }));
  395. t6.Subscribe (Observer.Create<T6> (t => {
  396. q6.Enqueue (t);
  397. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  398. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  399. }, (ex) => sub.OnError (ex), () => {
  400. done [5] = true;
  401. if (done.All (b => b))
  402. sub.OnCompleted ();
  403. }));
  404. return sub;
  405. }
  406. }
  407. internal class Plan<T1, T2, T3, T4, T5, T6, TResult> : Plan<TResult>
  408. {
  409. Pattern<T1, T2, T3, T4, T5, T6> pattern;
  410. Func<T1, T2, T3, T4, T5, T6, TResult> selector;
  411. public Plan (Pattern<T1, T2, T3, T4, T5, T6> pattern, Func<T1, T2, T3, T4, T5, T6, TResult> selector)
  412. {
  413. this.pattern = pattern;
  414. this.selector = selector;
  415. }
  416. internal override IObservable<TResult> AsObservable ()
  417. {
  418. return pattern.AsObservable<TResult> (selector);
  419. }
  420. }
  421. public class Pattern<T1, T2, T3, T4, T5, T6, T7> : Pattern
  422. {
  423. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7)
  424. {
  425. this.t1 = t1;
  426. this.t2 = t2;
  427. this.t3 = t3;
  428. this.t4 = t4;
  429. this.t5 = t5;
  430. this.t6 = t6;
  431. this.t7 = t7;
  432. }
  433. IObservable<T1> t1;
  434. IObservable<T2> t2;
  435. IObservable<T3> t3;
  436. IObservable<T4> t4;
  437. IObservable<T5> t5;
  438. IObservable<T6> t6;
  439. IObservable<T7> t7;
  440. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8> And<T8> (IObservable<T8> other)
  441. {
  442. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8> (t1, t2, t3, t4, t5, t6, t7, other);
  443. }
  444. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector)
  445. {
  446. return new Plan<T1, T2, T3, T4, T5, T6, T7, TResult> (this, selector);
  447. }
  448. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector)
  449. {
  450. var sub = new Subject<TResult> ();
  451. bool [] done = new bool [7];
  452. var q1 = new Queue<T1> ();
  453. var q2 = new Queue<T2> ();
  454. var q3 = new Queue<T3> ();
  455. var q4 = new Queue<T4> ();
  456. var q5 = new Queue<T5> ();
  457. var q6 = new Queue<T6> ();
  458. var q7 = new Queue<T7> ();
  459. t1.Subscribe (Observer.Create<T1> (t => {
  460. q1.Enqueue (t);
  461. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  462. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  463. }, (ex) => sub.OnError (ex), () => {
  464. done [0] = true;
  465. if (done.All (b => b))
  466. sub.OnCompleted ();
  467. }));
  468. t2.Subscribe (Observer.Create<T2> (t => {
  469. q2.Enqueue (t);
  470. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  471. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  472. }, (ex) => sub.OnError (ex), () => {
  473. done [1] = true;
  474. if (done.All (b => b))
  475. sub.OnCompleted ();
  476. }));
  477. t3.Subscribe (Observer.Create<T3> (t => {
  478. q3.Enqueue (t);
  479. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  480. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  481. }, (ex) => sub.OnError (ex), () => {
  482. done [2] = true;
  483. if (done.All (b => b))
  484. sub.OnCompleted ();
  485. }));
  486. t4.Subscribe (Observer.Create<T4> (t => {
  487. q4.Enqueue (t);
  488. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  489. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  490. }, (ex) => sub.OnError (ex), () => {
  491. done [3] = true;
  492. if (done.All (b => b))
  493. sub.OnCompleted ();
  494. }));
  495. t5.Subscribe (Observer.Create<T5> (t => {
  496. q5.Enqueue (t);
  497. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  498. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  499. }, (ex) => sub.OnError (ex), () => {
  500. done [4] = true;
  501. if (done.All (b => b))
  502. sub.OnCompleted ();
  503. }));
  504. t6.Subscribe (Observer.Create<T6> (t => {
  505. q6.Enqueue (t);
  506. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  507. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  508. }, (ex) => sub.OnError (ex), () => {
  509. done [5] = true;
  510. if (done.All (b => b))
  511. sub.OnCompleted ();
  512. }));
  513. t7.Subscribe (Observer.Create<T7> (t => {
  514. q7.Enqueue (t);
  515. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  516. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  517. }, (ex) => sub.OnError (ex), () => {
  518. done [6] = true;
  519. if (done.All (b => b))
  520. sub.OnCompleted ();
  521. }));
  522. return sub;
  523. }
  524. }
  525. internal class Plan<T1, T2, T3, T4, T5, T6, T7, TResult> : Plan<TResult>
  526. {
  527. Pattern<T1, T2, T3, T4, T5, T6, T7> pattern;
  528. Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector;
  529. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7> pattern, Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector)
  530. {
  531. this.pattern = pattern;
  532. this.selector = selector;
  533. }
  534. internal override IObservable<TResult> AsObservable ()
  535. {
  536. return pattern.AsObservable<TResult> (selector);
  537. }
  538. }
  539. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8> : Pattern
  540. {
  541. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8)
  542. {
  543. this.t1 = t1;
  544. this.t2 = t2;
  545. this.t3 = t3;
  546. this.t4 = t4;
  547. this.t5 = t5;
  548. this.t6 = t6;
  549. this.t7 = t7;
  550. this.t8 = t8;
  551. }
  552. IObservable<T1> t1;
  553. IObservable<T2> t2;
  554. IObservable<T3> t3;
  555. IObservable<T4> t4;
  556. IObservable<T5> t5;
  557. IObservable<T6> t6;
  558. IObservable<T7> t7;
  559. IObservable<T8> t8;
  560. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> And<T9> (IObservable<T9> other)
  561. {
  562. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> (t1, t2, t3, t4, t5, t6, t7, t8, other);
  563. }
  564. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
  565. {
  566. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult> (this, selector);
  567. }
  568. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
  569. {
  570. var sub = new Subject<TResult> ();
  571. bool [] done = new bool [8];
  572. var q1 = new Queue<T1> ();
  573. var q2 = new Queue<T2> ();
  574. var q3 = new Queue<T3> ();
  575. var q4 = new Queue<T4> ();
  576. var q5 = new Queue<T5> ();
  577. var q6 = new Queue<T6> ();
  578. var q7 = new Queue<T7> ();
  579. var q8 = new Queue<T8> ();
  580. t1.Subscribe (Observer.Create<T1> (t => {
  581. q1.Enqueue (t);
  582. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  583. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  584. }, (ex) => sub.OnError (ex), () => {
  585. done [0] = true;
  586. if (done.All (b => b))
  587. sub.OnCompleted ();
  588. }));
  589. t2.Subscribe (Observer.Create<T2> (t => {
  590. q2.Enqueue (t);
  591. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  592. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  593. }, (ex) => sub.OnError (ex), () => {
  594. done [1] = true;
  595. if (done.All (b => b))
  596. sub.OnCompleted ();
  597. }));
  598. t3.Subscribe (Observer.Create<T3> (t => {
  599. q3.Enqueue (t);
  600. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  601. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  602. }, (ex) => sub.OnError (ex), () => {
  603. done [2] = true;
  604. if (done.All (b => b))
  605. sub.OnCompleted ();
  606. }));
  607. t4.Subscribe (Observer.Create<T4> (t => {
  608. q4.Enqueue (t);
  609. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  610. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  611. }, (ex) => sub.OnError (ex), () => {
  612. done [3] = true;
  613. if (done.All (b => b))
  614. sub.OnCompleted ();
  615. }));
  616. t5.Subscribe (Observer.Create<T5> (t => {
  617. q5.Enqueue (t);
  618. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  619. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  620. }, (ex) => sub.OnError (ex), () => {
  621. done [4] = true;
  622. if (done.All (b => b))
  623. sub.OnCompleted ();
  624. }));
  625. t6.Subscribe (Observer.Create<T6> (t => {
  626. q6.Enqueue (t);
  627. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  628. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  629. }, (ex) => sub.OnError (ex), () => {
  630. done [5] = true;
  631. if (done.All (b => b))
  632. sub.OnCompleted ();
  633. }));
  634. t7.Subscribe (Observer.Create<T7> (t => {
  635. q7.Enqueue (t);
  636. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  637. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  638. }, (ex) => sub.OnError (ex), () => {
  639. done [6] = true;
  640. if (done.All (b => b))
  641. sub.OnCompleted ();
  642. }));
  643. t8.Subscribe (Observer.Create<T8> (t => {
  644. q8.Enqueue (t);
  645. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  646. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  647. }, (ex) => sub.OnError (ex), () => {
  648. done [7] = true;
  649. if (done.All (b => b))
  650. sub.OnCompleted ();
  651. }));
  652. return sub;
  653. }
  654. }
  655. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult> : Plan<TResult>
  656. {
  657. Pattern<T1, T2, T3, T4, T5, T6, T7, T8> pattern;
  658. Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector;
  659. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
  660. {
  661. this.pattern = pattern;
  662. this.selector = selector;
  663. }
  664. internal override IObservable<TResult> AsObservable ()
  665. {
  666. return pattern.AsObservable<TResult> (selector);
  667. }
  668. }
  669. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> : Pattern
  670. {
  671. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9)
  672. {
  673. this.t1 = t1;
  674. this.t2 = t2;
  675. this.t3 = t3;
  676. this.t4 = t4;
  677. this.t5 = t5;
  678. this.t6 = t6;
  679. this.t7 = t7;
  680. this.t8 = t8;
  681. this.t9 = t9;
  682. }
  683. IObservable<T1> t1;
  684. IObservable<T2> t2;
  685. IObservable<T3> t3;
  686. IObservable<T4> t4;
  687. IObservable<T5> t5;
  688. IObservable<T6> t6;
  689. IObservable<T7> t7;
  690. IObservable<T8> t8;
  691. IObservable<T9> t9;
  692. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> And<T10> (IObservable<T10> other)
  693. {
  694. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> (t1, t2, t3, t4, t5, t6, t7, t8, t9, other);
  695. }
  696. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector)
  697. {
  698. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> (this, selector);
  699. }
  700. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector)
  701. {
  702. var sub = new Subject<TResult> ();
  703. bool [] done = new bool [9];
  704. var q1 = new Queue<T1> ();
  705. var q2 = new Queue<T2> ();
  706. var q3 = new Queue<T3> ();
  707. var q4 = new Queue<T4> ();
  708. var q5 = new Queue<T5> ();
  709. var q6 = new Queue<T6> ();
  710. var q7 = new Queue<T7> ();
  711. var q8 = new Queue<T8> ();
  712. var q9 = new Queue<T9> ();
  713. t1.Subscribe (Observer.Create<T1> (t => {
  714. q1.Enqueue (t);
  715. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  716. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  717. }, (ex) => sub.OnError (ex), () => {
  718. done [0] = true;
  719. if (done.All (b => b))
  720. sub.OnCompleted ();
  721. }));
  722. t2.Subscribe (Observer.Create<T2> (t => {
  723. q2.Enqueue (t);
  724. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  725. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  726. }, (ex) => sub.OnError (ex), () => {
  727. done [1] = true;
  728. if (done.All (b => b))
  729. sub.OnCompleted ();
  730. }));
  731. t3.Subscribe (Observer.Create<T3> (t => {
  732. q3.Enqueue (t);
  733. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  734. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  735. }, (ex) => sub.OnError (ex), () => {
  736. done [2] = true;
  737. if (done.All (b => b))
  738. sub.OnCompleted ();
  739. }));
  740. t4.Subscribe (Observer.Create<T4> (t => {
  741. q4.Enqueue (t);
  742. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  743. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  744. }, (ex) => sub.OnError (ex), () => {
  745. done [3] = true;
  746. if (done.All (b => b))
  747. sub.OnCompleted ();
  748. }));
  749. t5.Subscribe (Observer.Create<T5> (t => {
  750. q5.Enqueue (t);
  751. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  752. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  753. }, (ex) => sub.OnError (ex), () => {
  754. done [4] = true;
  755. if (done.All (b => b))
  756. sub.OnCompleted ();
  757. }));
  758. t6.Subscribe (Observer.Create<T6> (t => {
  759. q6.Enqueue (t);
  760. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  761. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  762. }, (ex) => sub.OnError (ex), () => {
  763. done [5] = true;
  764. if (done.All (b => b))
  765. sub.OnCompleted ();
  766. }));
  767. t7.Subscribe (Observer.Create<T7> (t => {
  768. q7.Enqueue (t);
  769. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  770. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  771. }, (ex) => sub.OnError (ex), () => {
  772. done [6] = true;
  773. if (done.All (b => b))
  774. sub.OnCompleted ();
  775. }));
  776. t8.Subscribe (Observer.Create<T8> (t => {
  777. q8.Enqueue (t);
  778. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  779. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  780. }, (ex) => sub.OnError (ex), () => {
  781. done [7] = true;
  782. if (done.All (b => b))
  783. sub.OnCompleted ();
  784. }));
  785. t9.Subscribe (Observer.Create<T9> (t => {
  786. q9.Enqueue (t);
  787. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  788. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  789. }, (ex) => sub.OnError (ex), () => {
  790. done [8] = true;
  791. if (done.All (b => b))
  792. sub.OnCompleted ();
  793. }));
  794. return sub;
  795. }
  796. }
  797. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> : Plan<TResult>
  798. {
  799. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> pattern;
  800. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector;
  801. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector)
  802. {
  803. this.pattern = pattern;
  804. this.selector = selector;
  805. }
  806. internal override IObservable<TResult> AsObservable ()
  807. {
  808. return pattern.AsObservable<TResult> (selector);
  809. }
  810. }
  811. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> : Pattern
  812. {
  813. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10)
  814. {
  815. this.t1 = t1;
  816. this.t2 = t2;
  817. this.t3 = t3;
  818. this.t4 = t4;
  819. this.t5 = t5;
  820. this.t6 = t6;
  821. this.t7 = t7;
  822. this.t8 = t8;
  823. this.t9 = t9;
  824. this.t10 = t10;
  825. }
  826. IObservable<T1> t1;
  827. IObservable<T2> t2;
  828. IObservable<T3> t3;
  829. IObservable<T4> t4;
  830. IObservable<T5> t5;
  831. IObservable<T6> t6;
  832. IObservable<T7> t7;
  833. IObservable<T8> t8;
  834. IObservable<T9> t9;
  835. IObservable<T10> t10;
  836. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> And<T11> (IObservable<T11> other)
  837. {
  838. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, other);
  839. }
  840. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector)
  841. {
  842. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> (this, selector);
  843. }
  844. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector)
  845. {
  846. var sub = new Subject<TResult> ();
  847. bool [] done = new bool [10];
  848. var q1 = new Queue<T1> ();
  849. var q2 = new Queue<T2> ();
  850. var q3 = new Queue<T3> ();
  851. var q4 = new Queue<T4> ();
  852. var q5 = new Queue<T5> ();
  853. var q6 = new Queue<T6> ();
  854. var q7 = new Queue<T7> ();
  855. var q8 = new Queue<T8> ();
  856. var q9 = new Queue<T9> ();
  857. var q10 = new Queue<T10> ();
  858. t1.Subscribe (Observer.Create<T1> (t => {
  859. q1.Enqueue (t);
  860. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  861. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  862. }, (ex) => sub.OnError (ex), () => {
  863. done [0] = true;
  864. if (done.All (b => b))
  865. sub.OnCompleted ();
  866. }));
  867. t2.Subscribe (Observer.Create<T2> (t => {
  868. q2.Enqueue (t);
  869. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  870. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  871. }, (ex) => sub.OnError (ex), () => {
  872. done [1] = true;
  873. if (done.All (b => b))
  874. sub.OnCompleted ();
  875. }));
  876. t3.Subscribe (Observer.Create<T3> (t => {
  877. q3.Enqueue (t);
  878. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  879. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  880. }, (ex) => sub.OnError (ex), () => {
  881. done [2] = true;
  882. if (done.All (b => b))
  883. sub.OnCompleted ();
  884. }));
  885. t4.Subscribe (Observer.Create<T4> (t => {
  886. q4.Enqueue (t);
  887. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  888. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  889. }, (ex) => sub.OnError (ex), () => {
  890. done [3] = true;
  891. if (done.All (b => b))
  892. sub.OnCompleted ();
  893. }));
  894. t5.Subscribe (Observer.Create<T5> (t => {
  895. q5.Enqueue (t);
  896. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  897. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  898. }, (ex) => sub.OnError (ex), () => {
  899. done [4] = true;
  900. if (done.All (b => b))
  901. sub.OnCompleted ();
  902. }));
  903. t6.Subscribe (Observer.Create<T6> (t => {
  904. q6.Enqueue (t);
  905. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  906. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  907. }, (ex) => sub.OnError (ex), () => {
  908. done [5] = true;
  909. if (done.All (b => b))
  910. sub.OnCompleted ();
  911. }));
  912. t7.Subscribe (Observer.Create<T7> (t => {
  913. q7.Enqueue (t);
  914. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  915. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  916. }, (ex) => sub.OnError (ex), () => {
  917. done [6] = true;
  918. if (done.All (b => b))
  919. sub.OnCompleted ();
  920. }));
  921. t8.Subscribe (Observer.Create<T8> (t => {
  922. q8.Enqueue (t);
  923. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  924. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  925. }, (ex) => sub.OnError (ex), () => {
  926. done [7] = true;
  927. if (done.All (b => b))
  928. sub.OnCompleted ();
  929. }));
  930. t9.Subscribe (Observer.Create<T9> (t => {
  931. q9.Enqueue (t);
  932. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  933. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  934. }, (ex) => sub.OnError (ex), () => {
  935. done [8] = true;
  936. if (done.All (b => b))
  937. sub.OnCompleted ();
  938. }));
  939. t10.Subscribe (Observer.Create<T10> (t => {
  940. q10.Enqueue (t);
  941. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  942. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  943. }, (ex) => sub.OnError (ex), () => {
  944. done [9] = true;
  945. if (done.All (b => b))
  946. sub.OnCompleted ();
  947. }));
  948. return sub;
  949. }
  950. }
  951. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> : Plan<TResult>
  952. {
  953. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> pattern;
  954. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector;
  955. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector)
  956. {
  957. this.pattern = pattern;
  958. this.selector = selector;
  959. }
  960. internal override IObservable<TResult> AsObservable ()
  961. {
  962. return pattern.AsObservable<TResult> (selector);
  963. }
  964. }
  965. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> : Pattern
  966. {
  967. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10, IObservable<T11> t11)
  968. {
  969. this.t1 = t1;
  970. this.t2 = t2;
  971. this.t3 = t3;
  972. this.t4 = t4;
  973. this.t5 = t5;
  974. this.t6 = t6;
  975. this.t7 = t7;
  976. this.t8 = t8;
  977. this.t9 = t9;
  978. this.t10 = t10;
  979. this.t11 = t11;
  980. }
  981. IObservable<T1> t1;
  982. IObservable<T2> t2;
  983. IObservable<T3> t3;
  984. IObservable<T4> t4;
  985. IObservable<T5> t5;
  986. IObservable<T6> t6;
  987. IObservable<T7> t7;
  988. IObservable<T8> t8;
  989. IObservable<T9> t9;
  990. IObservable<T10> t10;
  991. IObservable<T11> t11;
  992. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> And<T12> (IObservable<T12> other)
  993. {
  994. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, other);
  995. }
  996. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector)
  997. {
  998. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> (this, selector);
  999. }
  1000. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector)
  1001. {
  1002. var sub = new Subject<TResult> ();
  1003. bool [] done = new bool [11];
  1004. var q1 = new Queue<T1> ();
  1005. var q2 = new Queue<T2> ();
  1006. var q3 = new Queue<T3> ();
  1007. var q4 = new Queue<T4> ();
  1008. var q5 = new Queue<T5> ();
  1009. var q6 = new Queue<T6> ();
  1010. var q7 = new Queue<T7> ();
  1011. var q8 = new Queue<T8> ();
  1012. var q9 = new Queue<T9> ();
  1013. var q10 = new Queue<T10> ();
  1014. var q11 = new Queue<T11> ();
  1015. t1.Subscribe (Observer.Create<T1> (t => {
  1016. q1.Enqueue (t);
  1017. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1018. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1019. }, (ex) => sub.OnError (ex), () => {
  1020. done [0] = true;
  1021. if (done.All (b => b))
  1022. sub.OnCompleted ();
  1023. }));
  1024. t2.Subscribe (Observer.Create<T2> (t => {
  1025. q2.Enqueue (t);
  1026. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1027. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1028. }, (ex) => sub.OnError (ex), () => {
  1029. done [1] = true;
  1030. if (done.All (b => b))
  1031. sub.OnCompleted ();
  1032. }));
  1033. t3.Subscribe (Observer.Create<T3> (t => {
  1034. q3.Enqueue (t);
  1035. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1036. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1037. }, (ex) => sub.OnError (ex), () => {
  1038. done [2] = true;
  1039. if (done.All (b => b))
  1040. sub.OnCompleted ();
  1041. }));
  1042. t4.Subscribe (Observer.Create<T4> (t => {
  1043. q4.Enqueue (t);
  1044. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1045. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1046. }, (ex) => sub.OnError (ex), () => {
  1047. done [3] = true;
  1048. if (done.All (b => b))
  1049. sub.OnCompleted ();
  1050. }));
  1051. t5.Subscribe (Observer.Create<T5> (t => {
  1052. q5.Enqueue (t);
  1053. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1054. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1055. }, (ex) => sub.OnError (ex), () => {
  1056. done [4] = true;
  1057. if (done.All (b => b))
  1058. sub.OnCompleted ();
  1059. }));
  1060. t6.Subscribe (Observer.Create<T6> (t => {
  1061. q6.Enqueue (t);
  1062. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1063. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1064. }, (ex) => sub.OnError (ex), () => {
  1065. done [5] = true;
  1066. if (done.All (b => b))
  1067. sub.OnCompleted ();
  1068. }));
  1069. t7.Subscribe (Observer.Create<T7> (t => {
  1070. q7.Enqueue (t);
  1071. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1072. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1073. }, (ex) => sub.OnError (ex), () => {
  1074. done [6] = true;
  1075. if (done.All (b => b))
  1076. sub.OnCompleted ();
  1077. }));
  1078. t8.Subscribe (Observer.Create<T8> (t => {
  1079. q8.Enqueue (t);
  1080. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1081. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1082. }, (ex) => sub.OnError (ex), () => {
  1083. done [7] = true;
  1084. if (done.All (b => b))
  1085. sub.OnCompleted ();
  1086. }));
  1087. t9.Subscribe (Observer.Create<T9> (t => {
  1088. q9.Enqueue (t);
  1089. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1090. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1091. }, (ex) => sub.OnError (ex), () => {
  1092. done [8] = true;
  1093. if (done.All (b => b))
  1094. sub.OnCompleted ();
  1095. }));
  1096. t10.Subscribe (Observer.Create<T10> (t => {
  1097. q10.Enqueue (t);
  1098. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1099. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1100. }, (ex) => sub.OnError (ex), () => {
  1101. done [9] = true;
  1102. if (done.All (b => b))
  1103. sub.OnCompleted ();
  1104. }));
  1105. t11.Subscribe (Observer.Create<T11> (t => {
  1106. q11.Enqueue (t);
  1107. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1108. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1109. }, (ex) => sub.OnError (ex), () => {
  1110. done [10] = true;
  1111. if (done.All (b => b))
  1112. sub.OnCompleted ();
  1113. }));
  1114. return sub;
  1115. }
  1116. }
  1117. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> : Plan<TResult>
  1118. {
  1119. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> pattern;
  1120. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector;
  1121. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector)
  1122. {
  1123. this.pattern = pattern;
  1124. this.selector = selector;
  1125. }
  1126. internal override IObservable<TResult> AsObservable ()
  1127. {
  1128. return pattern.AsObservable<TResult> (selector);
  1129. }
  1130. }
  1131. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> : Pattern
  1132. {
  1133. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10, IObservable<T11> t11, IObservable<T12> t12)
  1134. {
  1135. this.t1 = t1;
  1136. this.t2 = t2;
  1137. this.t3 = t3;
  1138. this.t4 = t4;
  1139. this.t5 = t5;
  1140. this.t6 = t6;
  1141. this.t7 = t7;
  1142. this.t8 = t8;
  1143. this.t9 = t9;
  1144. this.t10 = t10;
  1145. this.t11 = t11;
  1146. this.t12 = t12;
  1147. }
  1148. IObservable<T1> t1;
  1149. IObservable<T2> t2;
  1150. IObservable<T3> t3;
  1151. IObservable<T4> t4;
  1152. IObservable<T5> t5;
  1153. IObservable<T6> t6;
  1154. IObservable<T7> t7;
  1155. IObservable<T8> t8;
  1156. IObservable<T9> t9;
  1157. IObservable<T10> t10;
  1158. IObservable<T11> t11;
  1159. IObservable<T12> t12;
  1160. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> And<T13> (IObservable<T13> other)
  1161. {
  1162. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, other);
  1163. }
  1164. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector)
  1165. {
  1166. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> (this, selector);
  1167. }
  1168. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector)
  1169. {
  1170. var sub = new Subject<TResult> ();
  1171. bool [] done = new bool [12];
  1172. var q1 = new Queue<T1> ();
  1173. var q2 = new Queue<T2> ();
  1174. var q3 = new Queue<T3> ();
  1175. var q4 = new Queue<T4> ();
  1176. var q5 = new Queue<T5> ();
  1177. var q6 = new Queue<T6> ();
  1178. var q7 = new Queue<T7> ();
  1179. var q8 = new Queue<T8> ();
  1180. var q9 = new Queue<T9> ();
  1181. var q10 = new Queue<T10> ();
  1182. var q11 = new Queue<T11> ();
  1183. var q12 = new Queue<T12> ();
  1184. t1.Subscribe (Observer.Create<T1> (t => {
  1185. q1.Enqueue (t);
  1186. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1187. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Deque

Large files files are truncated, but you can click here to view the full file