Method: FSM::Observer#wait_for_exit

Defined in:
lib/fsm-0.0.0/observer.rb

#wait_for_exit(fstate, &hook) ⇒ Object



137
138
139
140
141
142
143
144
145
# File 'lib/fsm-0.0.0/observer.rb', line 137

def wait_for_exit fstate, &hook
  argv = [fstate]
  unless fsm.state == fstate
    q = Queue.new
    once_on(Event::Exit, fstate){|*a| q.push a }
    argv.replace q.pop
  end
  icall hook, *argv if hook
end