python - 装饰来自twisted.internet.udp的Port类

标签 python protocols twisted twisted.internet

是否有可能从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/

相关文章:

Swift 类型推断和关联类型协议(protocol)

protocols - 使用 Java 的 SMB 连接

http - 扭柱长度限制

http - 哪种服务器类型最适合 "validation server"?

python - 示例 python 扭曲事件驱动的 Web 应用程序将请求计数递增 2,为什么?

python-tweepy with oauth -error code 301-failed to fetch username

python - 在 Python 中捕获重复组

python - Python 中的快速素数筛选

Python-撤消标准输出重定向

ios - 未采用扩展的 Swift 段错误