Thanks. I will give (3) a shot. Hopefully I will not have to fall back to (2).
Regards KK On 11 April 2013 18:26, Murphy McCauley <[email protected]> wrote: > That's a good question, and I don't know of a clear winner for all cases or > anything. Here's some pro/con: > > 1: select() loop > + It's mostly just plain old Python. > - Have to worry about multithreading type issues. If asynchronous > communication between this IO loop thread and cooperative Tasks (like > OpenFlow) fits your design (you're okay with queuing up requests and > responses, for example), this may not be too hard. There should be at least > a couple examples in POX of different ways to do this. > > 2: yield Select() loop > + Fits into POX coop model > + Can use similar code to a plain old select() loop with blocking IO > - Not super well documented / exemplified > > 3: IOWorker > + Fits into POX coop model > + Nice abstraction (hopefully) > - Not super well documented / exemplified > - It's another layer on top of #2, so in some sense may just be making things > LESS clear (this is mostly a concern because of the fact that it's not super > well documented and there have only been a handful of users) > > All that said, I used IOWorker for a reasonably complex project last year. > It involved several IOWorker subclasses and having 10s of client and server > sockets both of the plain and SSL variety going simultaneously. IOWorker got > an upgrade as part of this, and I think it worked out pretty well. > > -- Murphy > > On Apr 11, 2013, at 6:00 PM, kk yap wrote: > >> Which would you recommend? >> >> Btw, I do want the socket to be capable of supporting both client and >> server sockets. >> >> Regards >> KK >> >> On 11 April 2013 17:58, Murphy McCauley <[email protected]> wrote: >>> There have only been a few users of the modern (betta) version, AFAIK. But >>> the messenger component is specifically JSON-oriented. If you want to do >>> binary messages, you can: >>> >>> 1) Write a plain old socket server thing that runs on another thread (i.e. >>> a select() loop) and interacts with the coop Tasks. The web stuff works >>> this way. >>> 2) Write a recoco-friendly cooperative socket server thing that runs in its >>> own cooperative Task (i.e. a yield Select() loop, like of_01) >>> 3) Use the lib.io_worker IOWorker abstraction (basically a wrapper around >>> #2) >>> >>> -- Murphy >>> >>> On Apr 11, 2013, at 5:46 PM, kk yap wrote: >>> >>>> Hi, >>>> >>>> Has anyone actually used messenger.TCPTransport? My goal is to handle >>>> TCP connections with binary messages. So, I am hoping that I can >>>> reuse this component. >>>> >>>> Any advice is appreciated. >>>> >>>> Regards >>>> KK >>> >
