> 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.
Yep, but it is a much bigger domain than being served now... > 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. I agree that multiplexing has to be in the design thoughts and ultimately part of boost, but I worry it will be too much to deliver, test, and review in the first pass. And, I see no way I would use Boost.Socket for any non-trivial server in the near future b/c there is no way it will have all the elements provided by something like ACE to support server development. That said, I would love to see the multiplexor design pushed forward, but not at the expense of porting, testing, and documenting the socket core. > 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. Is there a reference you can add to the Wiki? http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket/References > 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. I believe we agree :-) BTW, I've been thinking for awhile that either boost::function or boost::signal will provide us with core of that callback framework that diverges from the traditional OO approach taken by ACE and as is proposed currently on the Wiki. Jeff Jeff _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost