using GethPlugin; using System.Numerics; namespace CodexContractsPlugin.ChainMonitor { public class ChainStateChangeHandlerMux : IChainStateChangeHandler { public ChainStateChangeHandlerMux(params IChainStateChangeHandler[] handlers) { Handlers = handlers.ToList(); } public List Handlers { get; } = new List(); public void OnNewRequest(RequestEvent requestEvent) { foreach (var handler in Handlers) handler.OnNewRequest(requestEvent); } public void OnRequestCancelled(RequestEvent requestEvent) { foreach (var handler in Handlers) handler.OnRequestCancelled(requestEvent); } public void OnRequestFailed(RequestEvent requestEvent) { foreach (var handler in Handlers) handler.OnRequestFailed(requestEvent); } public void OnRequestFinished(RequestEvent requestEvent) { foreach (var handler in Handlers) handler.OnRequestFinished(requestEvent); } public void OnRequestFulfilled(RequestEvent requestEvent) { foreach (var handler in Handlers) handler.OnRequestFulfilled(requestEvent); } public void OnSlotFilled(RequestEvent requestEvent, EthAddress host, BigInteger slotIndex) { foreach (var handler in Handlers) handler.OnSlotFilled(requestEvent, host, slotIndex); } public void OnSlotFreed(RequestEvent requestEvent, BigInteger slotIndex) { foreach (var handler in Handlers) handler.OnSlotFreed(requestEvent, slotIndex); } public void OnSlotReservationsFull(RequestEvent requestEvent, BigInteger slotIndex) { foreach (var handler in Handlers) handler.OnSlotReservationsFull(requestEvent, slotIndex); } public void OnError(string msg) { foreach (var handler in Handlers) handler.OnError(msg); } } }