Oh I was having trouble because my fileno() method was not returning the correct descriptor. But I fixed it...

Thanks for the excellent suggestion for improving performance!
I've implemented that change. It works great!



On Tue, Oct 1, 2013 at 5:38 AM, <exarkun@twistedmatrix.com> wrote:
On 07:30 am, dstainton415@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


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python