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
776 777 778 779 780 |
# File 'lib/a-commons.rb', line 776 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
687 688 689 690 691 692 693 |
# File 'lib/a-commons.rb', line 687 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
763 764 765 766 767 768 769 770 771 772 773 774 |
# File 'lib/a-commons.rb', line 763 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
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 685 |
# File 'lib/a-commons.rb', line 641 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 |