qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Stitcher <astitc...@redhat.com>
Subject RE: Windows port
Date Mon, 31 Mar 2008 15:40:15 GMT

On Fri, 2008-03-28 at 15:37 -0400, Steve Huston wrote:
> Hi Carl,
> 
> > Yes, I think that is fine for a first pass. Andrew is also 
> > working on an Infiniband DMA async IO layer avoiding both working
> > on that layer would be the way to go.
> 
> Ok, sounds good. Is there any visibility into this effort? It may be
> good to have a look and see if this is going in a way that will help
> Windows later, and maybe tweak things to better facilitate Windows if
> possible.
> 
> > So as long as the select-based work maps to the async classes 
> > I am fine as we can test the
> > performance and see if the extra work is warranted. the key 
> > is that we 
> > want to retain the async
> > IO interfaces in the broker as they will be used for DMA 
> > based IO on 10G 
> > and IB.
> > 
> > make sense?
> 
> Sounds good - thanks very much for the quick feedback!

Steve

Sorry to remain silent for so long - I've been focusing hard on getting
the Infiniband code and ignoring much email in the past week.

Your analysis of the network IO code is basically correct - it is based
on a Proactor pattern (implemented using a Reactor) and the essential
platform portability is intended to be through reimplementing the Poller
class for each different platform (with the only current Poller being
based on the Linux epoll)

However although this is conceptually the case in practice I'm fairly
sure it's not that portable yet.

Basically there are a bunch of different intercept points for network
IO:
The most basic of these is in replacing the top level Acceptor for the
broker end, and Connector for the client end. We can discuss this
further if you'd like (I'd have to go through the code again in any case
just to be sure I remember it correctly).

Ideally in porting to Windows I think you should just be able to replace
the EpollPoller with a windows based class. Doing it with select should
be fairly straightforward though there are a couple of things. In
particular the Poller class interface assumes that you can change the fd
set at any point - even when you are waiting for something to happen. It
also assumes that it is safe to wait for the next event in multiple
threads simultaneously and the returned events are fairly distributed.

Anyway, I'm very happy to help you, so feel free to get in touch.

Andrew



Mime
View raw message