
Hi Cristopher, Some impressions of the Asio library, bearing in mind that I am a complete novice in this area, so the impressions are written from an ignorant viewpoint! Introduction----------- I'm confused as to why the library is called after asynchronous input/output. Should it not rather be called an asynchronous demultiplexer? That would make clearer what the library is designed for. I would also like to address the claims regarding scaleability. Perfect scaleability would enable me to create and use a single connection without requiring to set up the demultiplexer. As I understand it this is not the case. Simple jobs are affected by the need for high performance in large volumes of connections. The library seems to be about providing high volume network data services rather than about asynchronous I/O in the abstract. I feel that the name is confusing therefore. I would like an example useage of the library in the introduction that shows off the library in the large scale application its designed for because that would help to set the scene for the rest of the documentation and help to put right my incorrect expectations of what the library is about and who it is targetted at.. Examples might be a network server or a router maybe ( If these are valid applications of course) ... whatever.. something to help me to set the scene as a beginner. Examples--------- The first example I would like to see would involve showing how to save a file asynchronously. This would IMO be a good example because it should allow anyone to get a result without requiring the additional complexities of a network. I presume one would have to invoke the demultiplexer for a single file, but at least the demultiplexers raison d'aitre could be introduced here.. The two initial tutorial examples discuss timers with timeout handlers. It is difficult for me to see how these timers relate to asynchronous I/O. Why do I need the demultiplexer to set up a timer anyway. Where is it leading? Why do Ihave a multiplexer.run() function when the timer seems to have already started?.I need more context for what this tutorial is telling me. The mechanical structureof the library could be better explained before launching into the tutorial. e.g "The asio library is centered around a demultiplexer which controls the lifetime of asynchronous processes attached to it. An asynchronous process is governed by a timer and a completion event , which signals the end of its lifetime". Or whatever, but again a more detailed explanation of what I am dealing with would be helpful. As it stands I am presented with a tutorial where I use a demultiplexer without really having much idea why. As far as the networking examples go, I would prefer to have an example set of data provided so that I could get the examples to work immediately with out requiring any knowledege of the protocol. Is it not possible for example to download a sample web page from the asio doc site or something? As it stands I get a cryptic message "The requested name is valid and was found in the database, but it does not have the correct data being resolved for". (Even if I put complete rubbish in). The"useage client <host>" error message on not providing input parameters is equally cryptic, but I cant find any more detailed information. BTW In the synchronous TCP daytime client example why does the host resolver depend on the demultiplexerer? I feel that the design using the demultiplexer is quite monolithic. Rationale--------- It seems from other comments, to be the case that the interface ( function names etc) is based on existing networking libraries. If this is so then it ought to be discussed in the documentation. A section on the features and issue with other networking libraries and why their features were accepted/ rejected for asio design would be nice, a rationale for the design decisions made. Conclusions-------------- My impressions are based on a very incomplete look at the library and little experience of networking applications. Apologies for anything incorrect or unintentionally abrupt in my review. Its obvious from other reviews that the library is highly regarded by those experienced in the field. For myself, I suspect the design used is rather monolithic and therefore not scaleable very well in the down direction, however having little experience in this area I'm not really in a position to suggest improvements. I'll be grateful for what I can get therefore. Vote---- I vote Yes to accept the Asio librray into boost. Thanks to Christopher for the time and effort he has put into it. regards Andy Little