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