私はツイストで物事をする方法を学ぼうとしていますが、私はちょっとしたコンセプトに固執しています。基本的に2つの別々のフェーズで通信するプロトコルを作る:まず短いハンドシェイクと認証、実際の作業。Twistedでプロトコルの2つの異なるフェーズを分離する方法は?
def stringReceived(self, data):
if self.state == "authenticate":
handle_auth(data)
else:
handle_actual_work(data)
私はこれを行うためのねじれた道を考え出す苦労しています:
私の素朴なアプローチは、このようなプロトコルを記述することです。上記は正常ですか?認証を行うプロトコルと認証されたクライアントのみを扱うプロトコルを書く方がはるかに理にかなっているようですが、どうすればそれができますか?
私は同様の質問Twisted: How can I identify protocol on initial connection, then delegate to appropriate Protocol implementation?を見ました。そこに与えられた解決策は、私の現在のアプローチと基本的に同じです。これは本当に適切なアプローチですか?
ツイストして新しいことは、あなたがそれを置くときに単純にパイソンの芝生にあるのとは対照的に、いくつかの本質的なツイストイディオムを逃しているのを知ることは本当に難しいかもしれません。そういうわけで、チャイムを経験した人にそのような治療ができるのです。ありがとう! – porgarmingduod
なぜ関数名を文字列として保存し、すべての余分な作業をするのですか? 'self.state'にデータを処理する関数を格納するだけでなく、' self.state(data) 'を実行するのはなぜですか? – detly