I'm pleased to announce the first beta release of libpion, a C++ development library for implementing lightweight HTTP interfaces based on Boost and ASIO. libpion is open source software licensed under the Boost Software License, which allows anyone to use it for free in both commercial and non-commercial applications.
libpion lets you run multiple servers listening to any number of ports and network devices. Each server may have its own collection of modules defined which are bound to HTTP resources. Protocols other than HTTP can also easily be implemented for any server. A common thread pool is used to handle operations for all servers. libpion also supports server-side SSL & TLS encryption when built with the OpenSSL library.
libpion uses a plug-in or module framework for handling HTTP requests. Users of the library can easily implement modules to process requests in any number of ways. Some example modules included in the distribution are:
* Hello Module: A simple “hello world” implementation
* Log Module: When libpion is built with one of the supported logging libraries (log4cpp, log4cxx or log4cplus), this module will display the most recent log events recorded.
* Echo Module: This module echos back all information parsed within the HTTP request. It is intended mainly to demonstrate the use of libpion's HTTPRequest and HTTPResponse objects, and to test libpion's request parsing.
* Cookie Module: This module displays all of the cookies currently set within the client's browser and allows you to add and delete cookies.
* File Module: This module associates a disk directory (i.e. “/var/public”) with a web resource name (i.e. “/files”). HTTP requests may be made to receive files from within the directory (i.e. “/files/index.htm” would deliver “/var/public/index.htm”). The file module can cache files in memory to improve performance. It may be configured to recognize changes when they are made, or load everything at startup and never check for changes (for security and performance).