'Choose a protocol phase function and call it.
Call back to the appropriate protocol phase; this begins with
the function C{proto_init} and moves on to C{proto_*} depending on
what each C{proto_*} function returns.  (For example, if
C{self.proto_init} returns \'foo\', then C{self.proto_foo} will be the
next function called when a protocol message is received.'

def stringReceived(self, string):

    try:
        pto = ('proto_' + self.state)
        statehandler = getattr(self, pto)
    except AttributeError:
        log.msg('callback', self.state, 'not    found')
    else:
        self.state = statehandler(string)
        if (self.state == 'done'):
            self.transport.loseConnection()
