Exemplo n.º 1
0
 public void Enqueue(IStep step)
 {
     if (!IsRunning)
     {
         QueueToBeDone.Enqueue(step);
     }
     Loggmanager.Log("=========Step Enqueue has been added");
 }
Exemplo n.º 2
0
        //Core methods
        #region Main

        private IStepLog Start()
        {
            try
            {
                IStepLog logM = new LogMessage()
                {
                    IsSuccess = true, Message = $"Transaction finished with success"
                };
                IsRunning = true;
                int a = 0;
                while (QueueToBeDone.Count != 0)
                {
                    if (a == 8)
                    {
                        throw new Exception();
                    }
                    if (cts.IsCancellationRequested)
                    {
                        QueueToBeDone.Clear();
                        throw new Exception($"Transaction cancelled by user");
                    }

                    //
                    var item     = QueueToBeDone.Dequeue();
                    var backuped = item.Backup();
                    if (!backuped.IsSuccess)
                    {
                        logM = backuped;
                        break;
                    }

                    var done = item.Do();
                    if (!done.IsSuccess)
                    {
                        logM = done;
                        break;
                    }
                    QueueDone.Enqueue(item);
                }

                IsRunning = false;
                //
                return(logM);
            }
            catch (Exception ex)
            {
                IStepLog logM = new LogMessage()
                {
                    IsSuccess = false, Message = $"{ex.Message}"
                };
                return(logM);
            }
        }