[Twisted-Python] raw socket IWriteDescriptor

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Tue Oct 1 06:38:33 MDT 2013


On 07:30 am, dstainton415 at gmail.com wrote:
>Hi,
>
>I'm trying to implement an IWriteDescriptor using raw sockets.
>So far this is what I wrote... but it doesn't work:
>https://github.com/david415/hushTCP/blob/master/hush_writer.py
>
>Am I doing something obviously wrong here?
>
>I certainly am able to use raw socket + scapy correctly without 
>Twisted.

Please describe the problem in more detail than "it doesn't work". >:) 
Your hush_writer.py is a good <http://sscce.org/> but it's still 
important to know how its behavior differs from your expectations.

As far as I can tell it does work - although there's one mistake that 
makes it a bit more inefficient than strictly necessary:

     def doWrite(self):
         if len(self.packets) > 0:
             self.socket.sendto(self.packets.pop(0), self.address)
         else:
             return

When you're out of packets you should remove the writer from the 
reactor.  This version of the code will perpetually dispatch writeable 
notification (in the form of a doWrite call) to your object as fast as 
possible.

Once you fix this, don't forget to re-add the writer as soon as 
len(self.packets) rises above 0 again.

Jean-Paul



More information about the Twisted-Python mailing list