有沒有可能從twisted.internet.udp裝飾Port類? 我想修改端口類的一些方法的行爲,使其 鬆散或重複...或不時地延遲數據包。 我的目標是「模擬」一些擾動,並測試我自己的協議(在UDP上面設計的 )是否正常工作。從twisted.internet.udp裝飾Port類
有什麼想法?
在此先感謝
有沒有可能從twisted.internet.udp裝飾Port類? 我想修改端口類的一些方法的行爲,使其 鬆散或重複...或不時地延遲數據包。 我的目標是「模擬」一些擾動,並測試我自己的協議(在UDP上面設計的 )是否正常工作。從twisted.internet.udp裝飾Port類
有什麼想法?
在此先感謝
你不想裝飾或繼承或以任何方式修改的udp.Port
類的行爲除了受上游提交補丁來扭曲。一方面,這個班級真的應該是私人的;它從未打算供公衆使用,它是IReactorUDP
接口的實現細節。
其次,它不是只有 Twisted中的這種實現細節。另見twisted.internet.iocpreactor.udp.Port
,它沒有分享太多的實現。
你想要做的是簡單地寫一個實現相同接口的包裝器 - 實現IUDPTransport
- 的東西,然後在你的DatagramProtocol
中做self.transport = MyPacketDelayingWrapper(self.transport)
。
感謝您的回覆。我會嘗試你的解決方案。 – jean
爲了測試,您不需要包裝。你需要一個全新的'IUDPTransport'實現來實現你想要的行爲。包裝器也將繼承實際實現的所有延遲和損失,這將使得不可能可靠地測試所需的特定情況。 –
也許你會*子類*而不是*裝飾*。你看過源頭嗎? –
不,請不要細分這些。 – Glyph