Steve, I'm currently adding heartbeat capability into the qpid broker/client. In order to do that I'm adding functionality to the IO subsystem, in particular I've added a capability to make a callback "in the context of an IOHandle". That means that the callback is guaranteed to be run serialised with all other callbacks for that IOHandle. I have no idea how to structure this change in the windows code so I added stub code.
This capability should be generally very useful as well so is likely to be more widely used in the future (it would have been used in the past if it had been available). I'm planning to entirely remove the Dispatcher class and roll the Poller dispatch loop into the Poller class. I note you've implemented Poller::run now, but have done the opposite to the posix code, if you move the code itself into Poller and call it from Dispatcher::run then (I think) everything will carry on working when I replace calls to Dispatcher::run with calls to Poller::run. I hope this makes sense, get back to me if not. Andrew
