async static Task HandleUnaryCallWithMultiResponse(Ticker.TickerClient client, int?count = null) { MultipleTicksRequest request = null; if (count == null) { request = new MultipleTicksRequest { EmptyRequest = new EmptyRequest() }; } else { request = new MultipleTicksRequest { TicksRequested = new TicksForRequest { Count = (int)count } }; } var reply = await client.GetTicksAsync(request); if (reply.Code == GrpcProtoLibrary.Protos.Ticker.StatusCode.Error) { Console.WriteLine("Error occured while retriving data!!!"); return; } foreach (var tick in reply.Ticks) { WriteSingleTick(tick); } }
public override async Task<MultipleTicksReply> GetTicks(MultipleTicksRequest request, ServerCallContext context) { _logger.LogInformation("Request GetQuotes received !!!"); IEnumerable<Tick> ticks = null; switch (request.RequestCase) { case MultipleTicksRequest.RequestOneofCase.EmptyRequest: ticks = await _service.GetAll(null); break; case MultipleTicksRequest.RequestOneofCase.TicksRequested: ticks = await _service.GetAll(request.TicksRequested.Count); break; default: ticks = null; break; } if (ticks == null) return new MultipleTicksReply { Code = GrpcProtoLibrary.Protos.Ticker.StatusCode.Error }; var destinationTicks = ticks.Select(x => _mapper.Map<TickReply>(x)); return new MultipleTicksReply { Code = GrpcProtoLibrary.Protos.Ticker.StatusCode.Success, Ticks = { _mapper.Map<RepeatedField<TickReply>>(destinationTicks) } }; }