1

twisted.internet.udp から Port クラスを装飾する可能性はありますか? Port クラスのいくつかのメソッドの動作を変更して、時々パケットが失われたり、複製されたり、遅延したりしたいと考えています。私の目標は、いくつかの摂動を「シミュレート」し、(UDP 上で設計された) 私自身のプロトコルが正しく動作するかどうかをテストすることです。

何か案が ?

前もって感謝します

4

1 に答える 1

1

udp.PortTwistedのアップストリームにパッチを送信する以外の方法で、クラスの動作を装飾したり、サブクラス化したり、変更したりする必要はありません。一つには、このクラスは本当にプライベートにされるべきでした。これは、一般に使用することを意図したものではなく、IReactorUDPインターフェースの実装の詳細です。

第二に、Twisted内のそのような実装の詳細はそれだけではありません。twisted.internet.iocpreactor.udp.Port実装の多くを共有していないも参照してください。

あなたがしたいのは、同じインターフェースを実装するラッパー(実装するもの)を作成してから、で実行することIUDPTransportです。self.transport = MyPacketDelayingWrapper(self.transport)DatagramProtocol

于 2012-10-12T21:30:42.993 に答える