using System.Linq; namespace NzbDrone.Common.Eventing { /// /// Denotes a class which can handle a particular type of message. /// /// The type of message to handle. public interface IHandle : IHandle where TEvent : IEvent { /// /// Handles the message synchronously. /// /// The message. void Handle(TEvent message); } /// /// Denotes a class which can handle a particular type of message. /// /// The type of message to handle. public interface IHandleAsync : IHandleAsync where TEvent : IEvent { /// /// Handles the message asynchronously. /// /// The message. void HandleAsync(TEvent message); } /// /// A marker interface for classes that subscribe to messages. /// public interface IHandle { } /// /// A marker interface for classes that subscribe to messages. /// public interface IHandleAsync : IHandle { } }