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 });