Class: Isono::Models::NodeState

Inherits:
Sequel::Model
  • Object
show all
Includes:
Logger
Defined in:
lib/isono/models/node_state.rb

Instance Method Summary collapse

Methods included from Logger

included, initialize

Instance Method Details

#after_initializeObject



23
24
25
# File 'lib/isono/models/node_state.rb', line 23

def after_initialize
  self[:state] ||= :init
end

#process_event(ev, *args) ⇒ Object



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]
    # Do nothing
  else
    raise "Unknown state transition: #{ev}, #{self.state}"
  end
end