# DO NOT EDIT.
# generated by smc (http://smc.sourceforge.net/)
# from file : loginrequest.sm

import statemap


class LoginRequestState(statemap.State):

    def Entry(self, fsm):
        pass

    def Exit(self, fsm):
        pass

    def AuthRequest(self, fsm):
        self.Default(fsm)

    def BlankLine(self, fsm):
        self.Default(fsm)

    def CommandReply(self, fsm):
        self.Default(fsm)

    def ProcessLine(self, fsm, line):
        self.Default(fsm)

    def ReplyText(self, fsm):
        self.Default(fsm)

    def Default(self, fsm):
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write('TRANSITION   : Default\n')
        msg = "\n\tState: %s\n\tTransition: %s" % (
            fsm.getState().getName(), fsm.getTransition())
        raise statemap.TransitionUndefinedException, msg

class MainMap_Default(LoginRequestState):

    def BlankLine(self, fsm):
        ctxt = fsm.getOwner()
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.Default.BlankLine()\n")

        endState = fsm.getState()
        fsm.clearState()
        try:
            ctxt.setRequestFinished()
            ctxt.errbackDeferred("Protocol failure - Was not expecting a blank line")
        finally:
            fsm.setState(endState)

    def AuthRequest(self, fsm):
        ctxt = fsm.getOwner()
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.Default.AuthRequest()\n")

        endState = fsm.getState()
        fsm.clearState()
        try:
            ctxt.setRequestFinished()
            ctxt.errbackDeferred("Protocol failure - Was not expecting auth request")
        finally:
            fsm.setState(endState)

    def CommandReply(self, fsm):
        ctxt = fsm.getOwner()
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.Default.CommandReply()\n")

        endState = fsm.getState()
        fsm.clearState()
        try:
            ctxt.setRequestFinished()
            ctxt.errbackDeferred("Protocol failure - was not expecting a command reply")
        finally:
            fsm.setState(endState)

    def ReplyText(self, fsm):
        ctxt = fsm.getOwner()
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.Default.ReplyText()\n")

        endState = fsm.getState()
        fsm.clearState()
        try:
            ctxt.setRequestFinished()
            ctxt.errbackDeferred("Protocol failure - was not expecting reply text")
        finally:
            fsm.setState(endState)

    def ProcessLine(self, fsm, line):
        ctxt = fsm.getOwner()
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.Default.ProcessLine(line)\n")

        endState = fsm.getState()
        fsm.clearState()
        try:
            ctxt.setRequestFinished()
            ctxt.errbackDeferred("Protocol failure - was not expecting need to receive a line that needs to be processed")
        finally:
            fsm.setState(endState)

class MainMap_Startup(MainMap_Default):

    def AuthRequest(self, fsm):
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.Startup.AuthRequest()\n")

        fsm.getState().Exit(fsm)
        fsm.setState(MainMap.AuthRequestStarted)
        fsm.getState().Entry(fsm)

class MainMap_AuthRequestStarted(MainMap_Default):

    def BlankLine(self, fsm):
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.AuthRequestStarted.BlankLine()\n")

        fsm.getState().Exit(fsm)
        fsm.setState(MainMap.AuthRequestFinished)
        fsm.getState().Entry(fsm)

class MainMap_AuthRequestFinished(MainMap_Default):

    def CommandReply(self, fsm):
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.AuthRequestFinished.CommandReply()\n")

        fsm.getState().Exit(fsm)
        fsm.setState(MainMap.CommandReplyStarted)
        fsm.getState().Entry(fsm)

class MainMap_CommandReplyStarted(MainMap_Default):

    def ReplyText(self, fsm):
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.CommandReplyStarted.ReplyText()\n")

        fsm.getState().Exit(fsm)
        fsm.setState(MainMap.GotReplyText)
        fsm.getState().Entry(fsm)

class MainMap_GotReplyText(MainMap_Default):

    def BlankLine(self, fsm):
        ctxt = fsm.getOwner()
        if fsm.getDebugFlag() == True:
            fsm.getDebugStream().write("TRANSITION   : MainMap.GotReplyText.BlankLine()\n")

        fsm.getState().Exit(fsm)
        fsm.clearState()
        try:
            ctxt.setRequestFinished()
            ctxt.callOrErrback()
        finally:
            fsm.setState(MainMap.Startup)
            fsm.getState().Entry(fsm)

class MainMap:

    Startup = MainMap_Startup('MainMap.Startup', 0)
    AuthRequestStarted = MainMap_AuthRequestStarted('MainMap.AuthRequestStarted', 1)
    AuthRequestFinished = MainMap_AuthRequestFinished('MainMap.AuthRequestFinished', 2)
    CommandReplyStarted = MainMap_CommandReplyStarted('MainMap.CommandReplyStarted', 3)
    GotReplyText = MainMap_GotReplyText('MainMap.GotReplyText', 4)
    Default = MainMap_Default('MainMap.Default', -1)

class LoginRequest_sm(statemap.FSMContext):

    def __init__(self, owner):
        statemap.FSMContext.__init__(self)
        self._owner = owner
        self.setState(MainMap.Startup)
        MainMap.Startup.Entry(self)

    def AuthRequest(self):
        self._transition = 'AuthRequest'
        self.getState().AuthRequest(self)
        self._transition = None

    def BlankLine(self):
        self._transition = 'BlankLine'
        self.getState().BlankLine(self)
        self._transition = None

    def CommandReply(self):
        self._transition = 'CommandReply'
        self.getState().CommandReply(self)
        self._transition = None

    def ProcessLine(self, *arglist):
        self._transition = 'ProcessLine'
        self.getState().ProcessLine(self, *arglist)
        self._transition = None

    def ReplyText(self):
        self._transition = 'ReplyText'
        self.getState().ReplyText(self)
        self._transition = None

    def getState(self):
        if self._state == None:
            raise statemap.StateUndefinedException
        return self._state

    def getOwner(self):
        return self._owner

