Class: Gisele::VM::EventManager
Instance Method Summary
collapse
Methods inherited from Component
#connected!, #connected?, #registered, #registered!, #registered?, #unregistered, #vm
Constructor Details
Returns a new instance of EventManager.
5
6
7
8
|
# File 'lib/gisele/vm/event_manager.rb', line 5
def initialize
super()
@listeners = []
end
|
Instance Method Details
#connect ⇒ Object
10
11
12
13
14
15
16
|
# File 'lib/gisele/vm/event_manager.rb', line 10
def connect
super
@channel, @names = EM::Channel.new, {}
@listeners.each do |l|
em_subscribe(l)
end
end
|
#disconnect ⇒ Object
18
19
20
21
22
23
24
|
# File 'lib/gisele/vm/event_manager.rb', line 18
def disconnect
super
@listeners.each do |l|
em_unsubscribe(l)
end
@channel = @names = nil
end
|
#event(event) ⇒ Object
41
42
43
44
45
46
|
# File 'lib/gisele/vm/event_manager.rb', line 41
def event(event)
debug(event.to_s)
@channel.push(event) if connected?
rescue Exception => ex
error error_message(ex, "Error when processing `#{event.to_s}`")
end
|
#subscribe(a = nil, &b) ⇒ Object
26
27
28
29
|
# File 'lib/gisele/vm/event_manager.rb', line 26
def subscribe(a = nil, &b)
@listeners << (a || b)
em_subscribe(@listeners.last) if connected?
end
|
#subscribed?(l) ⇒ Boolean
37
38
39
|
# File 'lib/gisele/vm/event_manager.rb', line 37
def subscribed?(l)
@listeners.include?(l)
end
|
#unsubscribe(l) ⇒ Object
31
32
33
34
35
|
# File 'lib/gisele/vm/event_manager.rb', line 31
def unsubscribe(l)
if @listeners.delete(l) and connected?
em_unsubscribe(l)
end
end
|