public void ClearRollbackActions(IPackageOperationContext context)
 {
     Stack<Action> stack;
     if (_rollbackActions.TryGetValue(context, out stack))
     {
         stack.Clear();
         _rollbackActions.Remove(context);
     }
 }
示例#2
0
        public void ClearRollbackActions(IPackageOperationContext context)
        {
            Stack <Action> stack;

            if (_rollbackActions.TryGetValue(context, out stack))
            {
                stack.Clear();
                _rollbackActions.Remove(context);
            }
        }
        public void PushRollbackAction(Action rollbackAction, IPackageOperationContext context)
        {
            Stack<Action> stack;
            if (!_rollbackActions.TryGetValue(context, out stack))
            {
                stack = new Stack<Action>();
                _rollbackActions.Add(context, stack);
            }

            stack.Push(rollbackAction);
        }
示例#4
0
        public void PushRollbackAction(Action rollbackAction, IPackageOperationContext context)
        {
            Stack <Action> stack;

            if (!_rollbackActions.TryGetValue(context, out stack))
            {
                stack = new Stack <Action>();
                _rollbackActions.Add(context, stack);
            }

            stack.Push(rollbackAction);
        }
 public void Rollback(IPackageOperationContext context)
 {
     Stack<Action> stack;
     if (_rollbackActions.TryGetValue(context, out stack))
     {
         while (stack.Any())
         {
             var action = stack.Pop();
             action();
         }
     }
 }
示例#6
0
        public void Rollback(IPackageOperationContext context)
        {
            Stack <Action> stack;

            if (_rollbackActions.TryGetValue(context, out stack))
            {
                while (stack.Any())
                {
                    var action = stack.Pop();
                    action();
                }
            }
        }
        public void ClearRollbackActions(IPackageOperationContext context)
        {
            Stack <Action> stack;

            if (context is null)
            {
                Log.Warning("Current package operation context doesn't exist. Ignore rollback actions");
                return;
            }

            if (_rollbackActions.TryGetValue(context, out stack))
            {
                stack.Clear();
                _rollbackActions.Remove(context);
            }
        }
        private void CloseCurrentOperationContext(PackageOperationContext context)
        {
            Argument.IsNotNull(() => context);

            lock (_lockObject)
            {
                if (CurrentContext.Parent == null)
                {
                    OperationContextDisposing.SafeInvoke(this, new OperationContextEventArgs(context));
                    context.FileSystemContext.Dispose();

                    _packageOperationNotificationService.NotifyOperationBatchFinished(context.OperationType, context.Packages);
                    _rootContext = null;
                }

                CurrentContext = CurrentContext.Parent;
            }
        }
示例#9
0
        private void CloseCurrentOperationContext(PackageOperationContext context)
        {
            Argument.IsNotNull(() => context);

            lock (_lockObject)
            {
                if (CurrentContext.Parent == null)
                {
                    OperationContextDisposing?.Invoke(this, new OperationContextEventArgs(context));
                    context.FileSystemContext.Dispose();

                    _packageOperationNotificationService.NotifyOperationBatchFinished(context.OperationType, context.Packages ?? new IPackageDetails[0]);
                    _rootContext = null;
                }

                CurrentContext = CurrentContext.Parent;
            }
        }
        public void PushRollbackAction(Action rollbackAction, IPackageOperationContext context)
        {
            Stack <Action> stack;

            if (context is null)
            {
                Log.Warning("Current package operation context doesn't exist. Ignore rollback actions");
                return;
            }

            if (!_rollbackActions.TryGetValue(context, out stack))
            {
                stack = new Stack <Action>();
                _rollbackActions.Add(context, stack);
            }

            stack.Push(rollbackAction);
        }
示例#11
0
        private void CloseCurrentOperationContext(PackageOperationContext context)
        {
            Argument.IsNotNull(() => context);

            lock (_lockObject)
            {
                if (CurrentContext.Parent is null)
                {
                    OperationContextDisposing?.Invoke(this, new OperationContextEventArgs(context));
#pragma warning disable IDISP007 // Don't dispose injected.
                    context.FileSystemContext.Dispose();
#pragma warning restore IDISP007 // Don't dispose injected.

                    _packageOperationNotificationService.NotifyOperationBatchFinished(context.OperationType, context.Packages ?? new IPackageDetails[0]);
                    _rootContext = null;
                }

                CurrentContext = CurrentContext.Parent;
            }
        }
        private void ApplyOperationContext(PackageOperationContext context)
        {
            Argument.IsNotNull(() => context);

            lock (_lockObject)
            {
                if (_rootContext == null)
                {
                    context.CatchedExceptions.Clear();

                    _rootContext = context;
                    CurrentContext = context;
                    _packageOperationNotificationService.NotifyOperationBatchStarting(context.OperationType, context.Packages);
                }
                else
                {
                    context.Parent = CurrentContext;
                    CurrentContext = context;
                }
            }
        }
示例#13
0
        private void ApplyOperationContext(PackageOperationContext context)
        {
            Argument.IsNotNull(() => context);

            lock (_lockObject)
            {
                if (_rootContext is null)
                {
                    context.Exceptions.Clear();

                    _rootContext   = context;
                    CurrentContext = context;
                    _packageOperationNotificationService.NotifyOperationBatchStarting(context.OperationType, context.Packages ?? new IPackageDetails[0]);
                }
                else
                {
                    context.Parent = CurrentContext;
                    CurrentContext = context;
                }
            }
        }
        public OperationContextEventArgs(IPackageOperationContext packageOperationContext)
        {
            Argument.IsNotNull(() => packageOperationContext);

            PackageOperationContext = packageOperationContext;
        }
示例#15
0
        public OperationContextEventArgs(IPackageOperationContext packageOperationContext)
        {
            Argument.IsNotNull(() => packageOperationContext);

            PackageOperationContext = packageOperationContext;
        }