Esempio n. 1
0
 public async Task <IRestCommandResult> ProcessRestTaskCommand(IRestCommand command)
 {
     return(await Task.Run(async() =>
     {
         return ProcessRestCommand(command);
     }));
 }
Esempio n. 2
0
 public async Task <IRestCommandResult <T> > ProcessRestTaskCommand <T>(IRestCommand command) where T : new()
 {
     return(await Task.Run(async() =>
     {
         return ProcessRestCommand <T>(command);
     }));
 }
Esempio n. 3
0
        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
                      };
            }
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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;
            }));
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
 protected IRestCommandResult <T> Execute <T>(IRestCommand command) where T : new()
 {
     return(_consumer.ProcessRestCommand <T>(command));
 }
Esempio n. 15
0
 protected async Task <IRestCommandResult <T> > ExecuteTask <T>(IRestCommand command) where T : new()
 {
     return(await _consumer.ProcessRestCommandAsync <T>(command));
 }
Esempio n. 16
0
 protected async Task <IRestCommandResult> ExecuteTask(IRestCommand command)
 {
     return(await _consumer.ProcessRestCommandAsync(command));
 }
Esempio n. 17
0
 protected IRestCommandResult Execute(IRestCommand command)
 {
     return(_consumer.ProcessRestCommand(command));
 }