示例#1
0
        public async UnaryResult <GetCurrentStateResponse> GetCurrentStateAsync(GetCurrentStateRequest request)
        {
            (var stateType, var inputType) = GetGenericTupleFromHeaders();

            var getCurrentStateAsync = (GetCurrentStateAsyncDelegate)DelegateCache
                                       .GetOrAdd(
                key: (nameof(GetCurrentStateAsync), stateType, inputType, NoPayloadType),
                valueFactory: tuple =>
            {
                var machineIdParameter         = Expression.Parameter(typeof(string), "machineId");
                var cancellationTokenParameter = Expression.Parameter(typeof(CancellationToken), "cancellationToken");

                return(Expression.Lambda <GetCurrentStateAsyncDelegate>(
                           Expression.Call(
                               instance: Expression.Constant(LocalAdapter, LocalAdapter.GetType()),
                               methodName: nameof(GetCurrentStateAsync),
                               typeArguments: new[] { stateType, inputType },
                               arguments: new Expression[]
                {
                    machineIdParameter,
                    cancellationTokenParameter
                }),
                           false,
                           machineIdParameter,
                           cancellationTokenParameter)
                       .Compile());
            });

            return(await getCurrentStateAsync(
                       request.MachineId,
                       GetCallCancellationToken()));
        }
 public override Task <GetCurrentStateResponse> GetCurrentState(GetCurrentStateRequest request) =>
 FromResult(new GetCurrentStateResponse()
 {
     State = _state
 });