|
Boost : |
From: Brian Gray (briangray_at_[hidden])
Date: 2003-02-14 12:05:33
On Friday, February 14, 2003, at 08:38 AM, Jeff Garland wrote:
> So in summary, I think we should focus the Boost.Socket effort
> on what is currently described as 'level 1 - OS platform layer'
> and 'level 2 - basic connectivity layer' leaving multiplexing
> for later. I'm sure this will be controversial with some, but
> it seems to me that this is the only reasonable approach for a
> boost library daring to tread into a complex domain.
I disagree. By failing to provide support for multiplexing, we limit
ourselves to clients and servers small enough to follow the
one-thread-per-connection approach. Multiplexing is absolutely
essential for writing even moderately complex servers. Unless you're
saying the user could mimic multiplexing by manually looping through a
vector of non-blocking sockets, polling for activity. That would work,
but I still say that at the very least multiplexing should be worked
into the design, perhaps implemented as a simple looped poll at first,
then done correctly later.
Another thing is I think it is important to get at least one
non-Sockets-based network API in the mix right at the beginning to make
sure the design is truly flexible. I recommend Apple's OpenTransport,
not because it will be around much longer, but because it is quite a
bit different from Sockets, and in order to support it we will have to
think outside of the Sockets domain. Particularly with issues like
multiplexing, this would put into perspective just what needs to be
done, rather than assuming we should just provide an analog for
select() and be done with it.
At the very end of it, network programmers should be using a
callback-driven interface and not have to worry about multiplexing at
all, but I agree that for now a third layer should be deferred until
the basic groundwork has been laid out.
-- Brian
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk