blob: d45b702708e0afd66959cfc2afc295a509034380 [file] [log] [blame]
Jan Tattermuscha7608b02015-02-03 17:54:38 -08001using System;
2using System.Threading.Tasks;
3using System.Collections.Generic;
4using System.Reactive.Linq;
5
6namespace math
7{
8 public class Examples
9 {
10 public static void DivExample(IMathServiceClient stub)
11 {
12 DivReply result = stub.Div(new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build());
13 Console.WriteLine("Div Result: " + result);
14 }
15
16 public static void DivAsyncExample(IMathServiceClient stub)
17 {
18 Task<DivReply> call = stub.DivAsync(new DivArgs.Builder { Dividend = 4, Divisor = 5 }.Build());
19 DivReply result = call.Result;
20 Console.WriteLine(result);
21 }
22
23 public static void DivAsyncWithCancellationExample(IMathServiceClient stub)
24 {
25 Task<DivReply> call = stub.DivAsync(new DivArgs.Builder { Dividend = 4, Divisor = 5 }.Build());
26 DivReply result = call.Result;
27 Console.WriteLine(result);
28 }
29
30 public static void FibExample(IMathServiceClient stub)
31 {
32 var recorder = new RecordingObserver<Num>();
33 stub.Fib(new FibArgs.Builder { Limit = 5 }.Build(), recorder);
34
35 List<Num> numbers = recorder.ToList().Result;
36 Console.WriteLine("Fib Result: " + string.Join("|", recorder.ToList().Result));
37 }
38
39 public static void SumExample(IMathServiceClient stub)
40 {
41 List<Num> numbers = new List<Num>{new Num.Builder { Num_ = 1 }.Build(),
42 new Num.Builder { Num_ = 2 }.Build(),
43 new Num.Builder { Num_ = 3 }.Build()};
44
45 var res = stub.Sum();
46 foreach (var num in numbers) {
47 res.Inputs.OnNext(num);
48 }
49 res.Inputs.OnCompleted();
50
51 Console.WriteLine("Sum Result: " + res.Task.Result);
52 }
53
54 public static void DivManyExample(IMathServiceClient stub)
55 {
56 List<DivArgs> divArgsList = new List<DivArgs>{
57 new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build(),
58 new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(),
59 new DivArgs.Builder { Dividend = 7, Divisor = 2 }.Build()
60 };
61
62 var recorder = new RecordingObserver<DivReply>();
63
64 var inputs = stub.DivMany(recorder);
65 foreach (var input in divArgsList)
66 {
67 inputs.OnNext(input);
68 }
69 inputs.OnCompleted();
70
71 Console.WriteLine("DivMany Result: " + string.Join("|", recorder.ToList().Result));
72 }
73
74 public static void DependendRequestsExample(IMathServiceClient stub)
75 {
76 var numberList = new List<Num>
77 { new Num.Builder{ Num_ = 1 }.Build(),
78 new Num.Builder{ Num_ = 2 }.Build(), new Num.Builder{ Num_ = 3 }.Build()
79 };
80
81 numberList.ToObservable();
82
83 //IObserver<Num> numbers;
84 //Task<Num> call = stub.Sum(out numbers);
85 //foreach (var num in numberList)
86 //{
87 // numbers.OnNext(num);
88 //}
89 //numbers.OnCompleted();
90
91 //Num sum = call.Result;
92
93 //DivReply result = stub.Div(new DivArgs.Builder { Dividend = sum.Num_, Divisor = numberList.Count }.Build());
94 }
95 }
96}
97