Class: EvilEvents::Core::Events::Manager Private

Inherits:
Object
  • Object
show all
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.

Since:

  • 0.1.0

Defined Under Namespace

Classes: SubscriberList

Instance Attribute Summary collapse

Instance Method Summary collapse

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.

Parameters:

Since:

  • 0.1.0



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_classEvilEvents::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.

Returns:

Since:

  • 0.1.0



10
11
12
# File 'lib/evil_events/core/events/manager.rb', line 10

def event_class
  @event_class
end

#subscribersConcurrent::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.

Returns:

Since:

  • 0.1.0



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.

Parameters:

  • raw_subscriber (Object)
  • delegator (Symbol, String, NilClass)

Returns:

Since:

  • 0.1.0



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_typeString, 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.

Returns:

  • (String, Symbol)

Since:

  • 0.1.0



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.

Parameters:

  • raw_subscriber (Object)
  • delegator (Symbol, String, NilClass) (defaults to: nil)

Returns:

  • void

Raises:

Since:

  • 0.1.0



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.

Parameters:

Returns:

  • (Boolean)

Since:

  • 0.3.0



65
66
67
# File 'lib/evil_events/core/events/manager.rb', line 65

def supported_event?(event)
  event.is_a?(event_class)
end