# 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