Class: EvilEvents::Core::Events::Manager Private
- Inherits:
-
Object
- Object
- EvilEvents::Core::Events::Manager
- Defined in:
- lib/evil_events/core/events/manager.rb,
lib/evil_events/core/events/manager/subscriber_list.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Defined Under Namespace
Classes: SubscriberList
Instance Attribute Summary collapse
- #event_class ⇒ EvilEvents::Core::Events::AbstractEvent readonly private
- #subscribers ⇒ Concurrent::Array<EvilEvents::Core::Events::Subscriber> readonly private
Instance Method Summary collapse
- #create_event_subscriber(raw_subscriber, delegator) ⇒ EvilEvents::Core::Events::Subscriber private private
- #event_type ⇒ String, Symbol private
-
#initialize(event_class) ⇒ Manager
constructor
private
A new instance of Manager.
-
#notify(event) ⇒ Object
private
Void.
-
#observe(raw_subscriber, delegator = nil) ⇒ Object
private
Void.
- #supported_event?(event) ⇒ Boolean private private
Constructor Details
#initialize(event_class) ⇒ Manager
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Manager.
20 21 22 23 |
# File 'lib/evil_events/core/events/manager.rb', line 20 def initialize(event_class) @event_class = event_class @subscribers = SubscriberList.new end |
Instance Attribute Details
#event_class ⇒ EvilEvents::Core::Events::AbstractEvent (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
10 11 12 |
# File 'lib/evil_events/core/events/manager.rb', line 10 def event_class @event_class end |
#subscribers ⇒ Concurrent::Array<EvilEvents::Core::Events::Subscriber> (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
15 16 17 |
# File 'lib/evil_events/core/events/manager.rb', line 15 def subscribers @subscribers end |
Instance Method Details
#create_event_subscriber(raw_subscriber, delegator) ⇒ EvilEvents::Core::Events::Subscriber (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
74 75 76 77 78 |
# 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 |
#event_type ⇒ String, Symbol
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
55 56 57 |
# File 'lib/evil_events/core/events/manager.rb', line 55 def event_type event_class.type end |
#notify(event) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns void.
47 48 49 50 |
# 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 |
#observe(raw_subscriber, delegator = nil) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns void.
31 32 33 34 35 36 37 38 |
# 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 |
#supported_event?(event) ⇒ Boolean (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
65 66 67 |
# File 'lib/evil_events/core/events/manager.rb', line 65 def supported_event?(event) event.is_a?(event_class) end |