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, callable = nil, &block) click to toggle source
Calls superclass method
# File lib/faye/websocket/api/event_target.rb, line 20
def add_listener(event_type, callable = nil, &block)
  listener = callable || block
  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 32
def dispatch_event(event)
  event.target = event.current_target = self
  event.event_phase = Event::AT_TARGET

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

  unless listener or count > 0
    event_buffers[event.type].push(event)
  end

  listener.call(event) if listener
  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 28
def remove_event_listener(event_type, listener, use_capture = false)
  remove_listener(event_type, &listener)
end

Private Instance Methods

event_buffers() click to toggle source
# File lib/faye/websocket/api/event_target.rb, line 55
def event_buffers
  @event_buffers ||= Hash.new { |k,v| k[v] = [] }
end
flush(event_type, listener) click to toggle source
# File lib/faye/websocket/api/event_target.rb, line 49
def flush(event_type, listener)
  if buffer = event_buffers.delete(event_type.to_s)
    buffer.each { |event| listener.call(event) }
  end
end