module Faye::WebSocket::API::EventTarget

Public Instance Methods

add_event_listener(event_type, listener, use_capture = false) click to toggle source
# File lib/faye/websocket/api/event_target.rb, line 16
def add_event_listener(event_type, listener, use_capture = false)
  add_listener(event_type, &listener)
end
add_listener(event_type, &listener) click to toggle source
Calls superclass method
# File lib/faye/websocket/api/event_target.rb, line 20
def add_listener(event_type, &listener)
  EventMachine.next_tick do
    flush(event_type, &listener)
    super(event_type, &listener)
  end
end
dispatch_event(event) click to toggle source
# File lib/faye/websocket/api/event_target.rb, line 31
def dispatch_event(event)
  event.target = event.current_target = self
  event.event_phase = Event::AT_TARGET

  callback = instance_variable_get("@on#{ event.type }")
  count    = listener_count(event.type)

  unless callback or count > 0
    @buffers ||= Hash.new { |k,v| k[v] = [] }
    @buffers[event.type].push(event)
  end

  callback.call(event) if callback
  emit(event.type, event)
end
remove_event_listener(event_type, listener, use_capture = false) click to toggle source
# File lib/faye/websocket/api/event_target.rb, line 27
def remove_event_listener(event_type, listener, use_capture = false)
  remove_listener(event_type, &listener)
end

Private Instance Methods

flush(event_type, &callback) click to toggle source
# File lib/faye/websocket/api/event_target.rb, line 49
def flush(event_type, &callback)
  if buffer = @buffers && @buffers.delete(event_type.to_s)
    buffer.each { |event| callback.call(event) }
  end
end