Sha256: cbaa6f6b1331cd407a7fadc5bf0741e82daea6be1935a5df7b50af73cd709558
Contents?: true
Size: 1.95 KB
Versions: 2
Compression:
Stored size: 1.95 KB
Contents
gem 'state_machine' require 'state_machine' class Eye::Process # do transition def switch(name, reason = nil) @state_reason = reason || last_scheduled_reason self.send("#{name}!") end state_machine :state, :initial => :unmonitored do state :unmonitored, :up, :down state :starting, :stopping, :restarting event :starting do transition [:unmonitored, :down] => :starting end event :already_running do transition [:unmonitored, :down, :up] => :up end event :started do transition :starting => :up end event :crushed do transition [:starting, :restarting, :up] => :down end event :stopping do transition [:up, :restarting] => :stopping end event :stopped do transition :stopping => :down end event :cant_kill do transition :stopping => :up end event :restarting do transition [:unmonitored, :up, :down] => :restarting end event :restarted do transition :restarting => :up end event :unmonitoring do transition any => :unmonitored end after_transition :on => :crushed, :do => :on_crushed after_transition any => :unmonitored, :do => :on_unmonitored after_transition any-:up => :up, :do => :on_up after_transition :up => any-:up, :do => :from_up after_transition any => any, :do => :log_transition after_transition any => any, :do => :upd_for_triggers end def on_crushed schedule :check_crush, 'crushed' end def on_unmonitored self.flapping = false self.pid = nil end def on_up add_watchers add_childs end def from_up remove_watchers remove_childs end def log_transition(transition) @states_history.push transition.to_name, @state_reason info "switch :#{transition.event} [:#{transition.from_name} => :#{transition.to_name}] #{@state_reason ? "(#{@state_reason})" : nil}" end def upd_for_triggers(transition) check_triggers end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
eye-0.2 | lib/eye/process/states.rb |
eye-0.1.11 | lib/eye/process/states.rb |