using System; using System.Collections.Generic; using System.Linq; namespace Umbraco.Core.Events { /// /// An IEventDispatcher that immediately raise all events. /// /// This means that events will be raised during the scope transaction, /// whatever happens, and the transaction could roll back in the end. internal class PassThroughEventDispatcher : IEventDispatcher { public bool DispatchCancelable(EventHandler eventHandler, object sender, CancellableEventArgs args, string eventName = null) { if (eventHandler == null) return args.Cancel; eventHandler(sender, args); return args.Cancel; } public bool DispatchCancelable(EventHandler eventHandler, object sender, TArgs args, string eventName = null) where TArgs : CancellableEventArgs { if (eventHandler == null) return args.Cancel; eventHandler(sender, args); return args.Cancel; } public bool DispatchCancelable(TypedEventHandler eventHandler, TSender sender, TArgs args, string eventName = null) where TArgs : CancellableEventArgs { if (eventHandler == null) return args.Cancel; eventHandler(sender, args); return args.Cancel; } public void Dispatch(EventHandler eventHandler, object sender, EventArgs args, string eventName = null) { eventHandler?.Invoke(sender, args); } public void Dispatch(EventHandler eventHandler, object sender, TArgs args, string eventName = null) { eventHandler?.Invoke(sender, args); } public void Dispatch(TypedEventHandler eventHandler, TSender sender, TArgs args, string eventName = null) { eventHandler?.Invoke(sender, args); } public IEnumerable GetEvents(EventDefinitionFilter filter) { return Enumerable.Empty(); } public void ScopeExit(bool completed) { } } }