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
796 797 798 799 800 |
# File 'lib/a-commons.rb', line 796 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
707 708 709 710 711 712 713 |
# File 'lib/a-commons.rb', line 707 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
783 784 785 786 787 788 789 790 791 792 793 794 |
# File 'lib/a-commons.rb', line 783 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
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 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 |
# File 'lib/a-commons.rb', line 661 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 |