protected virtual Task <string> ExecuteMetadataQueryAsync(IReactiveServiceCommand command, Expression expression, CancellationToken token) { Debug.Assert(command != null); Debug.Assert(expression != null); var result = _serviceProvider.Provider.Execute(expression); return(_commandResponseFactory.CreateResponseAsync(command, Task.FromResult(result), token)); }
private Task <string> ExecuteGetObserverAsync <T>(IReactiveServiceCommand command, Uri uri, CancellationToken token) { Debug.Assert(command != null); Debug.Assert(uri != null); var result = _serviceProvider.GetObserverAsync <T>(uri, token); return(_commandResponseFactory.CreateResponseAsync(command, result, token)); }
public async Task <string> CreateResponseAsync(IReactiveServiceCommand command, Task task, CancellationToken token) { if (task == null) { throw new ArgumentNullException(nameof(task)); } await task.ConfigureAwait(false); return("OK"); }
public async Task <string> CreateResponseAsync <T>(IReactiveServiceCommand command, Task <T> task, CancellationToken token) { if (task == null) { throw new ArgumentNullException(nameof(task)); } var result = await task.ConfigureAwait(false); return(_serializer.Serialize(result)); }
public async Task ParseResponseAsync(IReactiveServiceCommand command, Task <string> request, CancellationToken token) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var response = await request.ConfigureAwait(false); Debug.Assert(response == "OK"); }
public async Task <T> ParseResponseAsync <T>(IReactiveServiceCommand command, Task <string> request, CancellationToken token) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var response = await request.ConfigureAwait(false); return(_serializer.Deserialize <T>(response)); }
public Task <string> ExecuteAsync(IReactiveServiceCommand command, CancellationToken token) { if (command == null) { throw new ArgumentNullException(nameof(command)); } return(command.Verb switch { CommandVerb.New => ExecuteNewAsync(command, token), CommandVerb.Remove => ExecuteRemoveAsync(command, token), CommandVerb.Get => ExecuteGetAsync(command, token), _ => ExecuteExtensionAsync(command, token), });
protected virtual Task <string> ExecuteGetObserverAsync(IReactiveServiceCommand command, Expression expression, CancellationToken token) { Debug.Assert(command != null); Debug.Assert(expression != null); var genericType = typeof(IAsyncReactiveObserver <>); var observerType = expression.Type.FindGenericType(genericType); if (expression is not ParameterExpression parameterExpression || observerType == null) { throw new InvalidOperationException( string.Format(CultureInfo.InvariantCulture, "Expected observer parameter expression of type '{0}'. Expression = '{1}'", genericType, expression.ToString())); } var executeGetObserverAsync = s_executeGetObserverAsync.MakeGenericMethod(observerType.GenericTypeArguments); return((Task <string>)executeGetObserverAsync.Invoke(this, new object[] { command, new Uri(parameterExpression.Name), token })); }
public ReactiveServiceCommandService(IReactiveServiceCommand obj) { _obj = obj; }