27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/isono/models/node_state.rb', line 27
def process_event(ev, *args)
case [ev, self.state.to_sym]
when [:on_ping, :online], [:on_ping, :init], [:on_ping, :timeout], [:on_ping, :offline]
self.state = :online
self.last_ping_at = Time.now
when [:on_unmonitor, :online]
self.state = :offline
when [:on_unmonitor, :timeout]
self.state = :offline
when [:on_unmonitor, :init]
self.state = :offline
when [:on_timeout, :online], [:on_timeout, :timeout]
self.state = :timeout
when [:on_timeout, :init]
else
raise "Unknown state transition: #{ev}, #{self.state}"
end
end
|