From: Dean M. B. <mik...@gm...> - 2010-09-29 09:46:52
|
Hi Guys! I just wanted to give a heads up to everyone on the list, and give everyone an update on what I've been up to so far. First though, there's been a sudden change in my availability to work on cpp-netlib. As of yesterday Philippine time I no longer have anything else to do but to work on cpp-netlib (and find a job on the side). My consulting engagement had been cut short due to some unfortunate circumstances. So now until I get a new gig, I'm going to be dedicating my days working on cpp-netlib (yay! :D). So here's what's been happening to the library: * The tags system now uses heavy metaprogramming with Boost.MPL. * The incremental parser now has a stable generic interface and I intend to lift a concept out of it as soon as I get around to implementing other incremental parsers for different protocols. * There are a number of enhancements in the way the directive system works, using the Boost.Variant trick that I emailed a couple weeks ago. That's in 0.7-devel and should make directive making a little more pleasant with definite extension points to look through. * The tags "http_async_8bit_(udp|tcp)_resolve" are now supported and implemented; there should be no changes to client code that wants to use the asynchronous (I should say "active") HTTP client implementation. There are a number of things that have yet to be done for packaging and releasing 0.7-devel: * Make the HTTP 1.0 and HTTP 1.1 tests pass. Right now only the HTTP 1.0 test includes the new asynchronous tags in the build. The HTTP 1.1 chunked-encoding transfer is what I intend to work on next, which will also require a new implementation of the incremental parser to support just the chunked-encoding body. * Update and merge the documentation. * Implement a callback-based HTTP Client API. The rationale for this is so that instead of returning a response object that has Boost.Thread futures embedded in it (and neatly abstracted away), the client can then just call the appropriate callback(s) for processing headers and the body stream as they become available. * Implement a streaming HTTP Client API. This means returning a response object that has a stream for a body instead of a pre-built string, as well as taking a request object that has a stream for a body. This should help with file-uploads through PUT/POST to make it not require all the contents of the file be in memory, a shared_ptr<> to a stream should suffice. As of now I don't have access to a MSVC compiler yet -- I'll see if I can get my hands on a Windows machine or VM soon, so that I can continue development on Windows -- but I have been building and testing with Clang and GCC in Linux, against Boost 1.44.0. I need some help in this regard as well as with the identification of issues in case there are any that you come across in the implementation. Thanks for reading up to here and let me know if there's anything immediate that I need to address before I hunker down and finish off the HTTP client implementation for 0.7. Have a good one everyone and I hope to hear from you soon! -- Dean Michael Berris deanberris.com |