module Noder::Events::EventEmitter
Public Instance Methods
emit(event, *arguments)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 24 def emit(event, *arguments) return if event_stacks[event].nil? event_stacks[event].call(*arguments) end
event_stack(event)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 57 def event_stack(event) event_stacks[event] end
event_stacks()
click to toggle source
# File lib/noder/events/event_emitter.rb, line 4 def event_stacks @event_stacks ||= {} end
listener_count(event)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 49 def listener_count(event) if event_stacks[event] event_stacks[event].length else 0 end end
listeners(event)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 41 def listeners(event) if event_stacks[event] event_stacks[event].items.map { |item| item[:callback] } else [] end end
max_listener_counts()
click to toggle source
# File lib/noder/events/event_emitter.rb, line 8 def max_listener_counts @max_listener_counts ||= {} end
on(event, callback=nil, options={}, &block)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 12 def on(event, callback=nil, options={}, &block) max_count = max_listener_counts[event] current_count = listener_count(event) if max_count && current_count >= max_count Noder.logger.warn "Maximum listener count exceeded for #{self.class} (max count is #{max_count}; current count is #{current_count})." end callback ||= block options[:callback] = callback event_stacks[event] ||= EventStack.new(node_class: node_class_for_event(event)) event_stacks[event].push(options) end
Also aliased as: add_listener
remove_all_listeners(event)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 33 def remove_all_listeners(event) event_stacks[event].remove_all end
remove_listener(event, listener)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 29 def remove_listener(event, listener) event_stacks[event].remove(listener) end
set_max_listeners(event, count)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 37 def set_max_listeners(event, count) max_listener_counts[event] = count end
Protected Instance Methods
event_node_classes()
click to toggle source
# File lib/noder/events/event_emitter.rb, line 69 def event_node_classes @event_node_classes ||= {} end
node_class_for_event(event)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 73 def node_class_for_event(event) event_node_classes[event] || EMEventNode end
set_node_class_for_event(klass, event)
click to toggle source
# File lib/noder/events/event_emitter.rb, line 65 def set_node_class_for_event(klass, event) event_node_classes[event] = klass end