|
Boost : |
From: Christopher Kohlhoff (chris_at_[hidden])
Date: 2004-01-29 06:26:55
Hi,
I have been following this thread with interest, and at this point I
think it might be worth jumping in and mentioning an experimental C++
networking library I have been developing over the past six months or
so:
http://www.tenermerx.com/programming/cpp/asio/asio-0.1.5.tar.gz
I chose to "unify" the different types of resources behind an
asynchronous interface (similar in some respects to the boost net
prototypes) in addition to supporting blocking calls. Currently the
library supports sockets and timers, although I do plan to extend
this. It does not present a non-blocking interface through the
external API, but it does use select internally for its non-Win32
implementation.
Since my hypothesis is that I should be able to write portable,
decently performing, network apps using only asynchronous calls, I
have tried to make it straightforward to integrate non-asynchronous
APIs into the event dispatching framework. I also attempt to obviate
the need for directly using mutexes and condition variables in
"application code" through a few simple rules for delivering the
events. However I haven't road tested these concepts in a large
real-world app yet, so I can't say for sure ;)
The core IO demultiplexing concepts came from the work of my former
colleague Alex Libman in developing a "portable Proactor framework" for
ACE (see http://www.terabit.com.au). This is a Proactor that can use
select if no more appropriate OS mechanism is available. I mention this
because Alex has had great success integrating support for a range of
i/o mechanisms, such as kqueue, Win32 IOCP, AIO on Sun, /dev/poll and RT
signals, to try and use the best one for each platform but present a
consistent interface.
I am using the library as an experimental platform for a whole bunch
of other ideas, but I'll save them for anyone who's actually
interested :)
Cheers,
Chris
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk