module WebSocket::Driver::EventEmitter

Public Class Methods

new() click to toggle source
# File lib/websocket/driver/event_emitter.rb, line 5
def initialize
  @listeners = Hash.new { |h,k| h[k] = [] }
end

Public Instance Methods

add_listener(event, callable = nil, &block) click to toggle source
# File lib/websocket/driver/event_emitter.rb, line 9
def add_listener(event, callable = nil, &block)
  listener = callable || block
  @listeners[event.to_s] << listener
  listener
end
emit(event, *args) click to toggle source
# File lib/websocket/driver/event_emitter.rb, line 37
def emit(event, *args)
  @listeners[event.to_s].dup.each do |listener|
    listener.call(*args)
  end
end
listener_count(event) click to toggle source
# File lib/websocket/driver/event_emitter.rb, line 43
def listener_count(event)
  return 0 unless @listeners.has_key?(event.to_s)
  @listeners[event.to_s].size
end
listeners(event) click to toggle source
# File lib/websocket/driver/event_emitter.rb, line 48
def listeners(event)
  @listeners[event.to_s]
end
on(event, callable = nil, &block) click to toggle source
# File lib/websocket/driver/event_emitter.rb, line 15
def on(event, callable = nil, &block)
  if callable
    add_listener(event, callable)
  else
    add_listener(event, &block)
  end
end
remove_all_listeners(event = nil) click to toggle source
# File lib/websocket/driver/event_emitter.rb, line 29
def remove_all_listeners(event = nil)
  if event
    @listeners.delete(event.to_s)
  else
    @listeners.clear
  end
end
remove_listener(event, callable = nil, &block) click to toggle source
# File lib/websocket/driver/event_emitter.rb, line 23
def remove_listener(event, callable = nil, &block)
  listener = callable || block
  @listeners[event.to_s].delete(listener)
  listener
end