コード例 #1
0
        public override Task <EvaluateExpressionLldbEvalResponse> EvaluateExpressionLldbEval(
            EvaluateExpressionLldbEvalRequest request, ServerCallContext context)
        {
            var value = valueStore.GetObject(request.Value.Id);
            IDictionary <string, SbValue> contextValues = new Dictionary <string, SbValue>();

            if (request.ContextVariables != null)
            {
                foreach (var contextVariable in request.ContextVariables)
                {
                    var val = valueStore.GetObject(contextVariable.Value.Id);

                    if (val != null)
                    {
                        contextValues.Add(contextVariable.Name, val.GetSbValue());
                    }
                }
            }
            var result   = value.EvaluateExpressionLldbEval(request.Expression, contextValues);
            var response = new EvaluateExpressionLldbEvalResponse();

            if (result != null)
            {
                response.Value = GrpcFactoryUtils.CreateValue(result, valueStore.AddObject(result));
            }
            return(Task.FromResult(response));
        }
コード例 #2
0
        public async Task <RemoteValue> EvaluateExpressionLldbEvalAsync(
            string expression, IDictionary <string, RemoteValue> contextVariables = null)
        {
            EvaluateExpressionLldbEvalRequest request =
                new EvaluateExpressionLldbEvalRequest {
                Value      = grpcSbValue,
                Expression = expression
            };

            if (contextVariables != null)
            {
                foreach (var variable in contextVariables)
                {
                    request.ContextVariables.Add(
                        new ContextVariable {
                        Name  = variable.Key,
                        Value = variable.Value.GrpcValue
                    });
                }
            }

            EvaluateExpressionLldbEvalResponse response = null;

            if (await connection.InvokeRpcAsync(async() => {
                response = await client.EvaluateExpressionLldbEvalAsync(request);
            }))
            {
                if (response.Value != null && response.Value.Id != 0)
                {
                    return(valueFactory.Create(connection, response.Value));
                }
            }
            return(null);
        }
コード例 #3
0
        public override Task <EvaluateExpressionLldbEvalResponse> EvaluateExpressionLldbEval(
            EvaluateExpressionLldbEvalRequest request, ServerCallContext context)
        {
            RemoteFrame frame = frameStore.GetObject(request.Frame.Id);
            RemoteValue value = frame.EvaluateExpressionLldbEval(request.Expression);

            var response = new EvaluateExpressionLldbEvalResponse();

            if (value != null)
            {
                response.Value = GrpcFactoryUtils.CreateValue(value, valueStore.AddObject(value));
            }
            return(Task.FromResult(response));
        }
コード例 #4
0
        public async Task <RemoteValue> EvaluateExpressionLldbEvalAsync(string text)
        {
            EvaluateExpressionLldbEvalResponse response = null;

            if (await connection.InvokeRpcAsync(async delegate
            {
                var request = new EvaluateExpressionLldbEvalRequest()
                {
                    Frame = grpcSbFrame,
                    Expression = text
                };
                response = await client.EvaluateExpressionLldbEvalAsync(request);
            }))
            {
                if (response.Value != null && response.Value.Id != 0)
                {
                    return(valueFactory.Create(connection, response.Value));
                }
            }

            return(null);
        }