Esempio n. 1
0
        public override async Task <EvaluateStringsReply> EvaluateStrings(EvaluateStringsRequest request, ServerCallContext context)
        {
            await _semaphoreSlim.WaitAsync();

            var reply = new EvaluateStringsReply();

            try
            {
                var strings = ROpsApi.EvaluateStrings(request.Code);

                reply.Payload = new EvaluateStringsPayload();

                foreach (var kvp in strings)
                {
                    var stringList = new StringList();
                    if (kvp.Value.IsCollection())
                    {
                        stringList.Strings.Add(kvp.Value);
                    }
                    reply.Payload.Strings.Add(kvp.Key, stringList);
                }
            }
            catch (Exception ex)
            {
                reply.Error = PopulateError(ex);
                _logger.LogError(ex, nameof(EvaluateStrings));
            }
            finally
            {
                _semaphoreSlim.Release();
            }

            return(await Task.FromResult(reply));
        }