Guest User

Untitled

a guest
Jan 23rd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.76 KB | None | 0 0
  1. class StateTrack
  2. def initialize
  3. @state = :initialized
  4. end
  5.  
  6. # Expected state transition:
  7. # :initialized -> :starting -> :running -> :shuttingdown -> :terminated
  8. def process_event(ev, *args)
  9. case [ev, @state]
  10. when [:on_start, :initialized]
  11. @state = :starting
  12. when [:on_run, :starting]
  13. @state = :running
  14. when [:on_shutdown, :running]
  15. @state = :shuttingdown
  16. when [:on_terminate, :shuttingdown]
  17. @state = :terminated
  18. else
  19. raise "Unknown state transition: #{ev} #{@state}"
  20. end
  21. end
  22. end
  23.  
  24. s = new StateTrack
  25.  
  26. s.process_event(:on_start)
  27. s.process_event(:on_run)
  28. s.process_event(:on_shutdown)
  29. s.process_event(:on_terminate)
  30.  
  31. s2 = new StateTrack
  32. s.process_event(:on_start)
  33. s.process_event(:on_shutdown) # raise error
Add Comment
Please, Sign In to add comment