是否有可能从twisted.internet.udp修饰Port类? 我想修改 Port 类的某些方法的行为,以便它 丢失或重复......或时不时延迟数据包。 我的目标是“模拟”一些扰动并测试我自己的协议(protocol)(设计 以上 UDP)行为正确。
有什么想法吗?
提前致谢
最佳答案
除了向 Twisted 上游提交补丁之外,您不想以任何方式装饰或子类化或修改 udp.Port 类的行为。一方面,这个类确实应该被设为私有(private);它从未打算供公众使用,它是 IReactorUDP
接口(interface)的实现细节。
其次,这并不是 Twisted 中唯一这样的实现细节。另请参阅 twisted.internet.iocpreactor.udp.Port
,它没有共享太多的实现。
您想要做的就是简单地编写一个实现相同接口(interface)的包装器 - 实现 IUDPTransport
的东西- 然后在 DatagramProtocol
中执行 self.transport = MyPacketDelayingWrapper(self.transport)
.
关于python - 装饰来自twisted.internet.udp的Port类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865442/