Method: FSM::Observer#wait_for_transition

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

#wait_for_transition(fstate, &hook) ⇒ Object



127
128
129
130
131
132
133
134
135
# File 'lib/fsm-0.0.0/observer.rb', line 127

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