Module: EventBus

Included in:
Application, EventWatcherForGem
Defined in:
lib/a-commons.rb

Overview

(or SourceEvent)

Instance Method Summary collapse

Instance Method Details

#attach_listener(_listener, _class_event) ⇒ Object



450
451
452
453
454
# File 'lib/a-commons.rb', line 450

def attach_listener(_listener, _class_event)
  @@listeners = {} unless defined? @@listeners
  @@listeners[_class_event] = []   unless @@listeners.has_key?(_class_event)
  @@listeners[_class_event] << _listener
end

#broadcast_event(_event) ⇒ Object



366
367
368
369
370
371
372
# File 'lib/a-commons.rb', line 366

def broadcast_event(_event)
  return _event if !defined?(@@listeners)
  event_classes = _event_class_stack(_event.class)
  event_classes.each do |_c|
    _broadcast_fase(_c, _event)
  end
end

#detach_listener(_listener, _class_event) ⇒ Object



444
445
446
447
448
# File 'lib/a-commons.rb', line 444

def detach_listener(_listener, _class_event)
  if @@listeners[_class_event]
    @@listeners[_class_event].delete(_listener)
  end
end

#process_event(_event) ⇒ Object



345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
# File 'lib/a-commons.rb', line 345

def process_event(_event)
  return _event if !defined?(@@listeners)
  event_classes = _event_class_stack(_event.class)
  #before fase
  event_classes.each do |_c|
    _process_fase(_c, _event, 'before')
    break if _event.is_breaked? # not responding to this means "you need to pass in an instance, not a class name
  end unless _event.is_breaked?
  # fase
  event_classes.each do |_c|
    _process_fase(_c, _event)
    break if _event.is_breaked?
  end unless _event.is_breaked?
  #after fase
  event_classes.each do |_c|
    _process_fase(_c, _event, 'after')
    break if _event.is_breaked?
  end unless _event.is_breaked?
  _event
end