Exemplo n.º 1
0
        /// <summary>
        /// Executes the specified item thru conveyor.
        /// </summary>
        /// <param name="item">The item.</param>
        public void Execute(T item)
        {
            OnConveyorStart?.Invoke(item);

            foreach (var stage in _stages)
            {
                stage.Execute(item);

                OnStageExecuted?.Invoke(stage.GetType(), item);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Executes the specified item thru conveyor.
        /// </summary>
        /// <param name="item">The item.</param>
        public Task Execute(T item)
        {
            OnConveyorStart?.Invoke(item);

            foreach (var stage in _stages)
            {
                stage.Execute(item).ConfigureAwait(false).GetAwaiter().GetResult();

                OnStageExecuted?.Invoke(stage.GetType(), item);
            }

            return(Task.Delay(0));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Process pipeline stages.
        /// </summary>
        /// <param name="item">The item for execution.</param>
        /// <returns></returns>
        public virtual bool Execute(T item)
        {
            OnPipelineStart?.Invoke(item);

            foreach (var stage in _stages)
            {
                var result = stage.Execute(item);

                OnStageExecuted?.Invoke(stage.GetType(), item, result);

                if (result == false)
                {
                    return(false);
                }
            }

            OnPipelineEnd?.Invoke(item);

            return(true);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Process pipeline stages.
        /// </summary>
        /// <param name="item">The item for execution.</param>
        /// <returns></returns>
        public bool Execute(T item)
        {
            OnPipelineStart?.Invoke(item);

            foreach (var stage in _stages)
            {
                var result = stage.Execute(item);

                OnStageExecuted?.Invoke(stage.GetType(), item, result);

                if (result)
                {
                    continue;
                }

                ErrorResult = stage.ErrorResult;

                return(false);
            }

            OnPipelineEnd?.Invoke(item);

            return(true);
        }