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
775 776 777 778 779 |
# File 'lib/a-commons.rb', line 775 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
686 687 688 689 690 691 692 |
# File 'lib/a-commons.rb', line 686 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
762 763 764 765 766 767 768 769 770 771 772 773 |
# File 'lib/a-commons.rb', line 762 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
640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 |
# File 'lib/a-commons.rb', line 640 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 |