#!/usr/bin/env python # encoding: utf-8 """ fsm.py Created by Cody Brocious on 2006-09-09. Copyright (c) 2006 Falling Leaf Systems, LLC. All rights reserved. """ class FSM: def __init__(self): self.old_state = None self.state = self.startState def run(self): """ Run state machine """ while True: new_state = self.state(self.old_state) self.old_state = self.state self.state = new_state if self.state == None or self.state == False: break return self.old_state def startState(self, old_state): """ Initializes my state machine """ self.counter = 0 return self.runState def runState(self, old_state): """ Increments my counter """ self.counter += 1 if self.counter == 50000: return self.endState elif self.counter % 1000 == 0: return self.logState else: return self.runState def logState(self, old_state): """ Logs my state output """ print 'Counter state', self.counter return self.runState def endState(self, old_state): """ Ends execution """ print 'Finished' return None if __name__ == '__main__': FSM().run()