public override async Task <CounterReply> AccumulateCount(IAsyncStreamReader <CounterRequest> requestStream, ServerCallContext context) { while (await requestStream.MoveNextAsync()) { _logger.LogInformation($"Incrementing count by {requestStream.Current.Count}"); _counter.Increment(requestStream.Current.Count); } return(new CounterReply { Count = _counter.Count }); }
public override async Task Chat(IAsyncStreamReader <ChatMessage> requestStream, IServerStreamWriter <ChatMessage> responseStream, ServerCallContext context) { if (!await requestStream.MoveNextAsync()) { // No messages so don't register and just exit. return; } var user = requestStream.Current.Name; // Warning, the following is very racy but good enough for a proof of concept // Register subscriber _logger.LogInformation($"{user} connected"); _subscribers.Add(responseStream); do { await BroadcastMessageAsync(requestStream.Current, _logger); } while (await requestStream.MoveNextAsync()); _subscribers.Remove(responseStream); _logger.LogInformation($"{user} disconnected"); }
public override async Task <CounterReply> AccumulateCount(IAsyncStreamReader <CounterRequest> requestStream, ServerCallContext context) { while (await requestStream.MoveNextAsync()) { _logger.LogInformation($"Incrementing count by {requestStream.Current.Count}"); _counter.Increment(requestStream.Current.Count); // Signal client that message was received _signaler.Set(); } // Signal client that exiting _signaler.Set(); return(new CounterReply { Count = _counter.Count }); }