Скрученная и включающая история командной строки - PullRequest
2 голосов
/ 18 июля 2010

В моем предыдущем вопросе я получил ответ:

Подкласс twisted.conch.recvline.HistoricRecvLine вместо twisted.protocols.basic.LineReceiver.keystrokeReceived - это один из нескольких дополнительных обратных вызовов протокола, доступных при использовании терминала вместо TCP-соединения.- Жан-Поль Кальдероне

Но что, если что иметь и терминал, и TCP-соединение?Когда я подкласс HistoricRecvLine я теряю функциональность соединения TCP?Итак, начнем с самого начала.Мой .py файл:

class WebCheckerCommandProtocol(basic.LineReceiver):

    def connectionMade(self):
        self.sendLine("checker console. Type 'help' for help.")

    def lineReceived(self, line):
        ...

    def connectionLost(self, reason):
        # stop the reactor, only because this is meant to be run in Stdio.
        reactor.stop()

    def do_listservers(self):
        "Cmd to Query all available Servers - Takes no arguments"
        conn = httplib.HTTPConnection(ip+":"+port)
        conn.request(.....)
        response = conn.getresponse()
        print response.status, response.reason
        data = response.read()
    def do_sessions(self):
        conn = httplib.HTTPConnection(ip+":"+port)
        conn.request(.....)

    def do_logUser(self, name):
        conn = httplib.HTTPConnection(ip+":"+port)
        conn.request(.....)


class SimpleServer(LineReceiver):

    def connectionMade(self):
        print 'Connection from: ', self.transport.client

    def connectionLost(self, reason):
        print self.transport.client, 'Disconnected'

    def dataReceived(self, line):
        """Here the XML Parser"""
        print line

if __name__ == "__main__":
    factory = Factory()
    factory.protocol = SimpleServer

    stdio.StandardIO(SimpleServer())
    reactor.listenTCP(1234, factory)
    reactor.run()

Как включить историю команд?Как мне объединить все, что вы предлагаете мне для достижения того, чего я хочу?

Очевидно, что я что-то упускаю!

...