using System; using System.Threading.Tasks; using Abp.Events.Bus.Factories; using Abp.Events.Bus.Handlers; namespace Abp.Events.Bus { /// /// Defines interface of the event bus. /// public interface IEventBus { #region Register /// /// Registers to an event. /// Given action is called for all event occurrences. /// /// Action to handle events /// Event type IDisposable Register(Action action) where TEventData : IEventData; /// /// Registers to an event. /// Given action is called for all event occurrences. /// /// Action to handle events /// Event type IDisposable AsyncRegister(Func action) where TEventData : IEventData; /// /// Registers to an event. /// Same (given) instance of the handler is used for all event occurrences. /// /// Event type /// Object to handle the event IDisposable Register(IEventHandler handler) where TEventData : IEventData; /// /// Registers to an event. /// Same (given) instance of the async handler is used for all event occurrences. /// /// Event type /// Object to handle the event IDisposable AsyncRegister(IAsyncEventHandler handler) where TEventData : IEventData; /// /// Registers to an event. /// A new instance of object is created for every event occurrence. /// /// Event type /// Type of the event handler IDisposable Register() where TEventData : IEventData where THandler : IEventHandler, new(); /// /// Registers to an event. /// Same (given) instance of the handler is used for all event occurrences. /// /// Event type /// Object to handle the event IDisposable Register(Type eventType, IEventHandler handler); /// /// Registers to an event. /// Given factory is used to create/release handlers /// /// Event type /// A factory to create/release handlers IDisposable Register(IEventHandlerFactory factory) where TEventData : IEventData; /// /// Registers to an event. /// /// Event type /// A factory to create/release handlers IDisposable Register(Type eventType, IEventHandlerFactory factory); #endregion #region Unregister /// /// Unregisters from an event. /// /// Event type /// void Unregister(Action action) where TEventData : IEventData; /// /// Unregisters from an event. /// /// Event type /// void AsyncUnregister(Func action) where TEventData : IEventData; /// /// Unregisters from an event. /// /// Event type /// Handler object that is registered before void Unregister(IEventHandler handler) where TEventData : IEventData; /// /// Unregisters from an event. /// /// Event type /// Handler object that is registered before void AsyncUnregister(IAsyncEventHandler handler) where TEventData : IEventData; /// /// Unregisters from an event. /// /// Event type /// Handler object that is registered before void Unregister(Type eventType, IEventHandler handler); /// /// Unregisters from an event. /// /// Event type /// Factory object that is registered before void Unregister(IEventHandlerFactory factory) where TEventData : IEventData; /// /// Unregisters from an event. /// /// Event type /// Factory object that is registered before void Unregister(Type eventType, IEventHandlerFactory factory); /// /// Unregisters all event handlers of given event type. /// /// Event type void UnregisterAll() where TEventData : IEventData; /// /// Unregisters all event handlers of given event type. /// /// Event type void UnregisterAll(Type eventType); #endregion #region Trigger /// /// Triggers an event. /// /// Event type /// Related data for the event void Trigger(TEventData eventData) where TEventData : IEventData; /// /// Triggers an event. /// /// Event type /// The object which triggers the event /// Related data for the event void Trigger(object eventSource, TEventData eventData) where TEventData : IEventData; /// /// Triggers an event. /// /// Event type /// Related data for the event void Trigger(Type eventType, IEventData eventData); /// /// Triggers an event. /// /// Event type /// The object which triggers the event /// Related data for the event void Trigger(Type eventType, object eventSource, IEventData eventData); /// /// Triggers an event asynchronously. /// /// Event type /// Related data for the event /// The task to handle async operation Task TriggerAsync(TEventData eventData) where TEventData : IEventData; /// /// Triggers an event asynchronously. /// /// Event type /// The object which triggers the event /// Related data for the event /// The task to handle async operation Task TriggerAsync(object eventSource, TEventData eventData) where TEventData : IEventData; /// /// Triggers an event asynchronously. /// /// Event type /// Related data for the event /// The task to handle async operation Task TriggerAsync(Type eventType, IEventData eventData); /// /// Triggers an event asynchronously. /// /// Event type /// The object which triggers the event /// Related data for the event /// The task to handle async operation Task TriggerAsync(Type eventType, object eventSource, IEventData eventData); #endregion } }