[Twisted-Python] Transfering a transport between DatagramProtocols
glyph at twistedmatrix.com
Tue Nov 24 18:13:52 EST 2009
On Nov 24, 2009, at 4:26 PM, Olivier Parisy wrote:
> Is this the "twisted" way to analyse this? Or should I use some kind of
> "proxy" DatagramProtocol which would relay datagramReceived calls to the
> proper DatagramProtocol, depending on the current protocol state
> (handshaking or data exchange)?
Currently, the right way to do this is to do as you suggest, and have two DatagramProtocol instances, and a third which switches between them.
Now, it just so happens that there is an accidental feature of udp.Port, whereby you can do self.udpPort.protocol = someOtherProtocol, and it will work. However, this feature is not supported and may break in a future version of Twisted.
In the future, however, it would be reasonable and useful to have an explicit "switch protocol" method, which would tear down one protocol/transport relationship and set up another. If you would like to open a ticket and contribute a patch to do this, that would be great :).
More information about the Twisted-Python