module Noder::Events::EventEmitter

Public Instance Methods

add_listener(event, callback=nil, options={}, &block)
Alias for: on
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