
Hi Simon, --- simon meiklejohn <simon@simonmeiklejohn.com> wrote:
However, locking_dispatcher has fairly simple innards, and a win32_pump_dispatcher would require an implementation thats a lot like asio::demuxer -i.e. with an internal queue of Handlers. Opportunity for re-use?
Absolutely. If asio does get accepted into boost, it would be good to factor out reusable bits of the implementation and/or replace them with some other boost library.
I can't see anything in the demuxer interface which limits it purely this role. Its applicability seems entirely general. (abstracted deferral of Handlers, which in reality can be 'handling' anything).
It's currently a limitation imposed by the services it provides. E.g. the default stream_socket implementation on Win32, which uses overlapped I/O and I/O completion ports, assumes that the demuxer is also implemented using I/O completion ports. I think it would be possible to break this coupling, but it is likely to be at a performance cost. In my thinking to date, socket I/O is just a facet of the demuxer, hidden behind a friendlier interface. Cheers, Chris