私は、Twistedを使ってTCPサーバーに接続するPythonプログラムを書いています。ソケットのもう一方の端にあるサーバーは、2つのプロトコル(protoAまたはprotoB)のいずれかを実行している可能性がありますが、接続を開始してどのプロトコルが使用されているかを「尋ねる」までは、中古。私は一度接続したプロトコル(protoAまたはprotoB)のバージョンを特定できますが、それは事前にわかりません。Twisted:最初の接続でプロトコルを識別し、適切なプロトコル実装に委譲するにはどうしたらいいですか?
明らかに、私のツイストプロトコル派生クラスには、特殊なコードがたくさんあることが明らかです。つまり、protoAがこのelifプロトを実行すると、何か他のことが行われます。しかし、2つの別々のプロトコルのコードを2つの別々のプロトコル実装に保持したいと考えています(基本クラスを通していくつかの機能を共有するかもしれませんが)。両方のバージョンのプロトコルには状態を維持する必要があるため、両方のバージョンを同じクラスにマッシュアップする必要があると混乱することがあります。
どうすればいいですか?おそらく、ファクトリ実装の最初の「プロトコル識別」ステップを実行し、次に正しいプロトコル派生をインスタンス化する方法はありますか?