示例#1
0
        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
            });
        }
示例#2
0
        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");
        }
示例#3
0
        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
            });
        }