libHTTP Library
libHTTP is an open source library (BSD or Boost Software License take your pick) library for embedding a HTTP server inside of a C++ program and/or for allowing C++ programs to make HTTP requests. This library is built upon the excellent ASIO sockets library which is to be included in a future release of Boost (1.35) and also relives on a number for other Boost libraries.
Project Goals
I started this project because I wanted a XML-RPC library and wasn't satisfied with what was already out there. I decided to write my own and the first step was implementing the HTTP layer ontop of which XML-RPC runs.
However very early in the development it became clear that not only was an embeddable HTTP layer a very worthy project on its own. libHTTP has reached milestone 2 i.e. version 0.2. At this stage it supports a full XML-RPC client and server library. However libHTTP was built to be modular, and in the future it may support other layers, for example a SOAP layer would be a logical addition to the library. The modular approach to its design ensures you will only include the features you actually use and in doing so helps to avoid unnecessary code-bloat.
So what does it do?
At the moment libHTTP does XML-RPC, be that client, server or both. All details on that can be found on the XML-RPC page.
Getting the Code
The latest atable release can always be found with the libHTTP Sourceforge project page. For the latest bleeding edge code you can check out the Subversion repository; svn://svn.geekisp.com/libhttp. I've setup a forum for dealing with any support issues. You should drop on by, even if only to say hello :) .
Getting Involved
If you're interested in libHTTP from a developers point of view or if you feel you'd like to contribute something back to the project I'd be only too delighted to hear from you. Your first port of call should be the libHTTP Trac site which I use to manage my development of the project. From there you can browse the source, check the latest progress and report bugs. You should also contact me at eoin@binarynotions.com.
Roadmap
At its current state of development libHTTP has reached milestone v 0.2. Initially milestone v 0.1 laid out a subset of HTTP 1.1 features which were necessary to allow a XML-RPC layer be built on top of libHTTP.
Following completion of those features my next goal for the library was to fully implement the XML-RPC layer which has brought the library up to it's current milestone; v 0.2.
Milestone v 0.3 contains a number of additional features which I wish to implement in libHTTP. Many of these will be directly beneficial to the XML-RPC layer, others will flesh out the HTTP feature set of the library in the hopes of supporting additional handlers in the future.
Longer Term Ambitions
Though is library was started exclusively with the goals of developing an XML-RPC library it became very clear early on that having a HTTP server or client available for embedding into C++ programs could offer much more than just a simple XML-RPC service for applications.
A fully functioning HTTP server could open up the possibility of serving webpages with the intention of exposing a web based interface for controlling or monitoring a program. It would even be possible to add sever-side pre-processing with, for example, the Lua language in a similar vein as PHP. While this idea is still just a pipe-dream I did keep it in mind throughout the development of the library to ensure that if the days comes to implement such handlers that hopefully the underlying library will be capable of supporting them.

