有没有可能从twisted.internet.udp装饰Port类? 我想修改一下Port类的一些方法的行为 丢失或重复...或不时延迟数据包。 我的目标是“模拟”一些扰动,并测试我自己的协议(设计 以上UDP)行为正确。
有什么想法吗?
提前致谢
答案 0 :(得分:1)
您不希望以任何方式装饰或子类化或修改udp.Port
类的行为,除非通过向Twisted提交上游补丁。首先,这个课真的应该是私人的;它从未打算供公众使用,它是IReactorUDP
界面的实现细节。
其次,在Twisted中不是仅这样的实现细节。另请参阅twisted.internet.iocpreactor.udp.Port
,它与其实现并不相同。
您要做的是简单地编写一个实现相同界面的包装器 - 实现IUDPTransport
的东西 - 然后在DatagramProtocol
中执行self.transport = MyPacketDelayingWrapper(self.transport)
。