Module: EventBus

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

Overview

(or SourceEvent)

Instance Method Summary collapse

Instance Method Details

#attach_listener(_listener, _class_event) ⇒ Object



408
409
410
411
412
# File 'lib/a-commons.rb', line 408

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



326
327
328
329
330
331
332
# File 'lib/a-commons.rb', line 326

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



402
403
404
405
406
# File 'lib/a-commons.rb', line 402

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

#process_event(_event) ⇒ Object



305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
# File 'lib/a-commons.rb', line 305

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?
  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