using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Pole.Core.EventBus { public abstract class Consumer : IConsumer { readonly List> eventHandlers; readonly List, Task>> batchEventHandlers; public Consumer( List> eventHandlers, List, Task>> batchEventHandlers) { this.eventHandlers = eventHandlers; this.batchEventHandlers = batchEventHandlers; } public void AddHandler(Func func) { eventHandlers.Add(func); } public Task Notice(byte[] bytes) { return Task.WhenAll(eventHandlers.Select(func => func(bytes))); } public Task Notice(List list) { return Task.WhenAll(batchEventHandlers.Select(func => func(list))); } } }