using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Nethereum.BlockchainProcessing.Processor { public class Processor: ProcessorBaseHandler, IProcessor { public Processor() { } public Processor(Func> criteria):base(criteria) { } public Processor(Func criteria) : base(criteria) { } protected List> ProcessorHandlers { get; set; } = new List>(); public virtual void AddProcessorHandler(Func action) { ProcessorHandlers.Add(new ProcessorHandler(action)); } public virtual void AddProcessorHandler(Func action, Func criteria) { ProcessorHandlers.Add(new ProcessorHandler(action, criteria)); } public virtual void AddProcessorHandler(Func action, Func> criteria) { ProcessorHandlers.Add(new ProcessorHandler(action, criteria)); } public virtual void AddProcessorHandler(IProcessorHandler processorHandler) { ProcessorHandlers.Add(processorHandler); } protected override async Task ExecuteInternalAsync(T value) { foreach (var x in ProcessorHandlers) { await x.ExecuteAsync(value).ConfigureAwait(false); } } } }