Module: EventBus
- Included in:
- Application, EventWatcherForGem
- Defined in:
- lib/a-commons.rb
Overview
(or SourceEvent)
Instance Method Summary collapse
- #attach_listener(_listener, _class_event) ⇒ Object
- #broadcast_event(_event) ⇒ Object
- #detach_listener(_listener, _class_event = nil) ⇒ Object
- #process_event(_event, _listeners = nil) ⇒ Object
Instance Method Details
#attach_listener(_listener, _class_event) ⇒ Object
712 713 714 715 716 |
# File 'lib/a-commons.rb', line 712 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
623 624 625 626 627 628 629 |
# File 'lib/a-commons.rb', line 623 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 = nil) ⇒ Object
699 700 701 702 703 704 705 706 707 708 709 710 |
# File 'lib/a-commons.rb', line 699 def detach_listener(_listener, _class_event=nil) if _class_event != nil if @@listeners[_class_event] @@listeners[_class_event].delete(_listener) end else #delete all the issues of listenere @@listeners.each{|klass, header| header.delete(_listener) } end end |
#process_event(_event, _listeners = nil) ⇒ Object
577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 |
# File 'lib/a-commons.rb', line 577 def process_event(_event, _listeners=nil) # _listener rapresent a filter on @@listeners if != nil return _event if !defined?(@@listeners) event_classes = _event_class_stack(_event.class) #before fase event_classes.each do |_c| if _listeners.nil? _process_fase(_c, _event, @@listeners[_c], 'before') else listeners_to_process = [] _listeners.each{|lis| listeners_to_process << lis if @@listeners[_c] && @@listeners[_c].include?(lis) } _process_fase(_c, _event, listeners_to_process, 'before') end 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| if _listeners.nil? _process_fase(_c, _event, @@listeners[_c]) else listeners_to_process = [] _listeners.each{|lis| listeners_to_process << lis if @@listeners[_c] && @@listeners[_c].include?(lis) } _process_fase(_c, _event, listeners_to_process) end break if _event.is_breaked? end unless _event.is_breaked? #after fase event_classes.each do |_c| if _listeners.nil? _process_fase(_c, _event, @@listeners[_c], 'after') else listeners_to_process = [] _listeners.each{|lis| listeners_to_process << lis if @@listeners[_c] && @@listeners[_c].include?(lis) } _process_fase(_c, _event, listeners_to_process, 'after') end break if _event.is_breaked? end unless _event.is_breaked? _event end |