コード例 #1
0
ファイル: EchoController.cs プロジェクト: Kookweb-ir/kCMS
        public IActionResult Get(string input)
        {
            EchoOutput result = new EchoOutput()
            {
                status  = true,
                message = string.Empty,
                result  = $"You said: {input ?? "nothing!"}"
            };

            return(Ok(result));
        }
コード例 #2
0
        /// <summary>
        /// Get input as stream, client streaming call
        /// </summary>
        /// <param name="requestStream"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task <EchoOutput> GetInputStream(IAsyncStreamReader <EchoInput> requestStream, ServerCallContext context)
        {
            _logger.LogTrace($"{context.Host} {context.Method}");

            var result = new EchoOutput();
            var input  = new StringBuilder();

            while (await requestStream.MoveNext())
            {
                input.AppendLine(requestStream.Current.Input);
            }

            result.Output    = input.ToString();
            result.TimeStamp = Timestamp.FromDateTime(DateTime.UtcNow);

            return(await Task.FromResult(result));
        }
コード例 #3
0
        /// <summary>
        /// Get echo of input, unary call
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override Task <EchoOutput> GetEcho(EchoInput request, ServerCallContext context)
        {
            _logger.LogTrace($"{context.Host} {context.Method}");

            var output = new StringBuilder();

            output.AppendLine("Your input is: " + request.Input);
            output.AppendLine("The server is: " + Environment.MachineName);

            var returnVal = new EchoOutput()
            {
                Output    = output.ToString(),
                TimeStamp = Timestamp.FromDateTime(DateTime.UtcNow)
            };

            return(Task.FromResult(returnVal));
        }
コード例 #4
0
        /// <summary>
        /// Get input as stream and return as stream
        /// </summary>
        /// <param name="requestStream"></param>
        /// <param name="responseStream"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task GetInputStreamAsServerStream(IAsyncStreamReader <EchoInput> requestStream, IServerStreamWriter <EchoOutput> responseStream, ServerCallContext context)
        {
            _logger.LogTrace($"{context.Host} {context.Method}");

            while (await requestStream.MoveNext())
            {
                var returnVal = new EchoOutput()
                {
                    Output    = requestStream.Current.Input.ToString(),
                    TimeStamp = Timestamp.FromDateTime(DateTime.UtcNow)
                };

                await responseStream.WriteAsync(returnVal);

                //Sleep 3s
                Thread.Sleep(3000);
            }
        }
コード例 #5
0
        /// <summary>
        /// Get echo returned as stream, server streaming call
        /// </summary>
        /// <param name="request"></param>
        /// <param name="responseStream"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task GetEchoStream(EchoInput request, IServerStreamWriter <EchoOutput> responseStream, ServerCallContext context)
        {
            _logger.LogTrace($"{context.Host} {context.Method}");

            for (int i = 0; i < 3; i++)
            {
                var returnVal = new EchoOutput()
                {
                    Output    = request.Input.ToString(),
                    TimeStamp = Timestamp.FromDateTime(DateTime.UtcNow)
                };

                _logger.LogInformation("Looping echo stream count " + i);

                await responseStream.WriteAsync(returnVal);

                //Sleep 3s
                Thread.Sleep(3000);
            }
        }