public async Task <IRestCommandResult> ProcessRestTaskCommand(IRestCommand command) { return(await Task.Run(async() => { return ProcessRestCommand(command); })); }
public async Task <IRestCommandResult <T> > ProcessRestTaskCommand <T>(IRestCommand command) where T : new() { return(await Task.Run(async() => { return ProcessRestCommand <T>(command); })); }
public IRestCommandResult ProcessRestCommand(IRestCommand command) { try { var proxyCommand = new Command { Method = command.Method, UniqueId = command.UniqueId, Url = command.Url, Body = command.Body }; var tcs = new TaskCompletionSource <CommandResult>(); var ct = new CancellationTokenSource(_actionTimeout); ct.Token.Register(() => { tcs.TrySetCanceled(); }, useSynchronizationContext: false); _openRequests.Add(command.UniqueId, tcs); var request = JsonConvert.SerializeObject(proxyCommand); #if DEBUG Debug.WriteLine(request); #endif _actionRequestConsumer.PushToQueue(request); // await for the result var result = tcs.Task.Result; var rtn = new QueueCommandResult { UniqueId = result.UniqueId, StatusCode = (HttpStatusCode)result.StatusCode }; return(rtn); } catch (AggregateException e) { foreach (var ex in e.InnerExceptions) { if (ex is TaskCanceledException) { // Task was cancelled! #if DEBUG Debug.WriteLine("Setting cancellation token for action {0} on dialogue {1}", command.Url, _actionRequestConsumer.DialogId); #endif } } return(null); } catch (DialogueClosedException dEx) { throw new DialogueClosedException() { DialogueId = _actionRequestConsumer.DialogId }; } }
public IRestCommandResult <T> ProcessRestCommand <T>(IRestCommand command) where T : new() { try { var proxyCommand = new Command { Method = command.Method, UniqueId = command.UniqueId, Url = command.Url, Body = command.Body }; var tcs = new TaskCompletionSource <CommandResult>(); var ct = new CancellationTokenSource(_actionTimeout); ct.Token.Register(() => { tcs.TrySetCanceled(); }, useSynchronizationContext: false); _openRequests.Add(command.UniqueId, tcs); var request = JsonConvert.SerializeObject(proxyCommand); #if DEBUG Debug.WriteLine(request); #endif _actionRequestConsumer.PushToQueue(request); // await for the result var result = tcs.Task.Result; var rtn = new QueueCommandResult <T> { UniqueId = result.UniqueId, StatusCode = (HttpStatusCode)result.StatusCode }; if (!string.IsNullOrEmpty(result.ResponseBody)) { rtn.Data = JsonConvert.DeserializeObject <T>(result.ResponseBody); } return(rtn); } catch (TaskCanceledException tEx) { // Task was cancelled! #if DEBUG Debug.WriteLine("Setting cancellation token for action {0} on dialogue {1}", command.Url, _actionRequestConsumer.DialogId); #endif return(null); } catch (DialogueClosedException dEx) { #if DEBUG Debug.WriteLine("Tried to execute action {0} on dialogue {1} but Dialogue was closed.", command.Url, _actionRequestConsumer.DialogId); #endif return(null); } }
public IRestCommandResult ProcessRestCommand(IRestCommand command) { var cmd = (Command)command; var result = cmd.Client.Execute(cmd.Request); var rtn = new CommandResult { StatusCode = result.StatusCode }; return(rtn); }
public async Task <IRestCommandResult> ProcessRestTaskCommand(IRestCommand command) { var cmd = (Command)command; var result = await cmd.Client.ExecuteTaskAsync(cmd.Request); var rtn = new CommandResult { StatusCode = result.StatusCode, RawData = result.RawBytes }; return(rtn); }
public IRestCommandResult <T> ProcessRestCommand <T>(IRestCommand command) where T : new() { var cmd = (Command)command; var result = cmd.Client.Execute <T>(cmd.Request); var rtn = new CommandResult <T> { StatusCode = result.StatusCode, Data = result.Data }; return(rtn); }
public async Task <IRestCommandResult <T> > ProcessRestCommandAsync <T>(IRestCommand command) where T : new() { var cmd = (Command)command; var result = await cmd.Client.ExecuteAsync <T>(cmd.Request); var rtn = new CommandResult <T> { StatusCode = result.StatusCode, Data = result.Data }; return(rtn); }
public async Task <IRestCommandResult> ProcessRestCommand(IRestCommand command) { var cmd = (Command)command; var result = await Task.Run(() => cmd.Client.Execute(cmd.Request)); var rtn = new CommandResult() { StatusCode = result.StatusCode }; return(rtn); }
public async Task <IRestCommandResult <T> > ProcessRestTaskCommand <T>(IRestCommand command) where T : new() { var cmd = (Command)command; return(await Task.Run(async() => { var result = await cmd.Client.ExecuteTaskAsync <T>(cmd.Request); var rtn = new CommandResult <T> { StatusCode = result.StatusCode, Data = result.Data }; return (IRestCommandResult <T>)rtn; })); }
public IRestCommandResult <T> ProcessRestCommand <T>(IRestCommand command) where T : new() { var cmd = (Command)command; var result = cmd.Client.Execute <T>(cmd.Request); //result.RunSynchronously(); result.GetAwaiter().GetResult(); var rtn = new CommandResult <T> { StatusCode = result.Result.StatusCode, Data = result.Result.Data }; return(rtn); }
public async Task <IRestCommandResult <T> > ProcessRestCommand <T>(IRestCommand command) where T : new() { var cmd = (Command)command; var result = await cmd.Client.ExecuteAsync <T>(cmd.Request); var rtn = new CommandResult <T> { StatusCode = result.StatusCode, Data = JsonConvert.DeserializeObject <T>(result.Content) }; return(rtn); }
public IRestCommandResult ProcessRestCommand(IRestCommand command) { var cmd = (Command)command; var result = cmd.Client.Execute(cmd.Request); //result.RunSynchronously(); result.GetAwaiter().GetResult(); var rtn = new CommandResult { StatusCode = result.Result.StatusCode, RawData = result.Result.RawBytes }; return(rtn); }
protected IRestCommandResult <T> Execute <T>(IRestCommand command) where T : new() { return(_consumer.ProcessRestCommand <T>(command)); }
protected async Task <IRestCommandResult <T> > ExecuteTask <T>(IRestCommand command) where T : new() { return(await _consumer.ProcessRestCommandAsync <T>(command)); }
protected async Task <IRestCommandResult> ExecuteTask(IRestCommand command) { return(await _consumer.ProcessRestCommandAsync(command)); }
protected IRestCommandResult Execute(IRestCommand command) { return(_consumer.ProcessRestCommand(command)); }