class EvilEvents::Core::Events::Manager
@api private @since 0.1.0
Attributes
@return [EvilEvents::Core::Events::AbstractEvent]
@since 0.1.0
@return [Concurrent::Array<EvilEvents::Core::Events::Subscriber>]
@since 0.1.0
Public Class Methods
@param event_class
[Class{EvilEvents::Core::Events::AbstractEvent}]
@since 0.1.0
# File lib/evil_events/core/events/manager.rb, line 20 def initialize(event_class) @event_class = event_class @subscribers = SubscriberList.new end
Public Instance Methods
@return [String, Symbol]
@since 0.1.0
# File lib/evil_events/core/events/manager.rb, line 55 def event_type event_class.type end
@param event [EvilEvents::Core::Events::AbstractEvent] @raise [EvilEvents::InconsistentEventClassError] @raise [EvilEvents::FailingSubscribersError]
@return void
@since 0.1.0
# File lib/evil_events/core/events/manager.rb, line 47 def notify(event) raise EvilEvents::InconsistentEventClassError unless supported_event?(event) EvilEvents::Core::Bootstrap[:event_system].process_event_notification(self, event) end
@param raw_subscriber [Object] @param delegator [Symbol, String, NilClass] @raise [EvilEvents::InvalidDelegatorTypeError] @return void
@since 0.1.0
# File lib/evil_events/core/events/manager.rb, line 31 def observe(raw_subscriber, delegator = nil) case delegator when NilClass, Symbol, String subscribers.push(create_event_subscriber(raw_subscriber, delegator)) else raise EvilEvents::InvalidDelegatorTypeError end end
Private Instance Methods
@param raw_subscriber [Object] @param delegator [Symbol, String, NilClass] @return [EvilEvents::Core::Events::Subscriber]
@since 0.1.0
# File lib/evil_events/core/events/manager.rb, line 74 def create_event_subscriber(raw_subscriber, delegator) delegation = -> { delegator || event_class.default_delegator } resolver = EvilEvents::Shared::DelegatorResolver.new(delegation) EvilEvents::Core::Events::Subscriber.new(raw_subscriber, resolver) end
@param event [EvilEvents::Core::Events::AbstractEvent] @return [Boolean]
@since 0.3.0
# File lib/evil_events/core/events/manager.rb, line 65 def supported_event?(event) event.is_a?(event_class) end