Module: WebSocket::Driver::EventEmitter

Included in:
WebSocket::Driver, Proxy
Defined in:
lib/websocket/driver/event_emitter.rb

Instance Method Summary collapse

Instance Method Details

#add_listener(event, callable = nil, &block) ⇒ Object



9
10
11
12
13
# 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) ⇒ Object



33
34
35
36
37
# File 'lib/websocket/driver/event_emitter.rb', line 33

def emit(event, *args)
  @listeners[event.to_s].dup.each do |listener|
    listener.call(*args)
  end
end

#initializeObject



5
6
7
# File 'lib/websocket/driver/event_emitter.rb', line 5

def initialize
  @listeners = Hash.new { |h,k| h[k] = [] }
end

#listener_count(event) ⇒ Object



39
40
41
42
# File 'lib/websocket/driver/event_emitter.rb', line 39

def listener_count(event)
  return 0 unless @listeners.has_key?(event.to_s)
  @listeners[event.to_s].size
end

#listeners(event) ⇒ Object



44
45
46
# File 'lib/websocket/driver/event_emitter.rb', line 44

def listeners(event)
  @listeners[event.to_s]
end

#on(event, callable = nil, &block) ⇒ Object



15
16
17
# File 'lib/websocket/driver/event_emitter.rb', line 15

def on(event, callable = nil, &block)
  add_listener(event, callable, &block)
end

#remove_all_listeners(event = nil) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/websocket/driver/event_emitter.rb', line 25

def remove_all_listeners(event = nil)
  if event
    @listeners.delete(event.to_s)
  else
    @listeners.clear
  end
end

#remove_listener(event, callable = nil, &block) ⇒ Object



19
20
21
22
23
# File 'lib/websocket/driver/event_emitter.rb', line 19

def remove_listener(event, callable = nil, &block)
  listener = callable || block
  @listeners[event.to_s].delete(listener)
  listener
end