The ioxx library provides primitives for asynchronous I/O in C++. That kind of thing is typically useful for people who would like to implement a highly concurrent network service, i.e. an application that performs input/output simultaneously on a great number of sockets. The library's main components are a socket event dispatcher, a time event dispatcher, and an asynchronous DNS resolver. There is also a class interface to socket programming that offers those wonders of modern C++ such as exception-style error reporting, transparent resource management, type-safety, and support for custom memory allocation strategies. Ioxx is thread-safe in the sense that it is fully re-entrant. The code runs on any POSIX-compliant operating system, most notably Linux, NetBSD, Solaris, AIX, HP/UX, and Windows.
git clone git://git.sv.gnu.org/ioxx.git
configure. Those scripts can be generated with the command
autoreconf -iif Autoconf 2.61 and Automake 1.10 (or later versions) are available.
For the impatient:
./configure && make check && make install
Ioxx is a header-only library that does not require any compilation -- with the exception of the test suite. The standard Autoconf installation procedure is described at great length in the distributed file
INSTALL. In addition to the usual standard options, ioxx can be configured with a number of additional switches. If those options are left unspecified, ioxx tries to auto-detect whether those features are available or not. Specifying these options is usually unnecessary. A status summary will be output at the end of the configure run.
BOOST_SUFFIX: Most systems allow linking the boost libraries under their normal names, i.e. the unit test framework can be linked as
-lboost_unit_test_framework. Other systems, however, have those libraries installed with special suffixes that denote the compiler version used to build the library. etc. On such a system, it will be necessar to assign the variable on the
configurecommand line, for example:
BOOST_SUFFIX=-gcc34. The boost libraries required only when building the unit tests.
--enable-epoll-pwait: Enable support for the Linux-specific
epollfamily of system calls.
--enable-ppoll: Enable support for the POSIX call
poll()and/or the non-standard extension
--enable-pselect: Enable support for the POSIX call
select()and/or the non-standard extension
--enable-adns: Enable asynchronous DNS resolving with GNU ADNS version 1.4 (or later). This might require additional
--enable-internal-docs: When re-building the reference documentation, include classes that are documented as internal. The default is not to include those classes.
--with-perl=PATH: Use these flags to specify the absolute paths to the corresponding binaries. Alternatively, the variables
PERLcan be assigned on the
configurecommand-line. These options concern only the reference documentation generated with doxygen.
Please submit bug reports or feature requests to the ioxx bug tracker. The library is still fairly new and I'm particularly interested in hearing about portability problems, i.e. platforms on which ioxx doesn't compile or fails the test suite.
The ioxx library is distributed under the terms of the GNU Lesser General Public License version 3 or, at your option, any later version. Ioxx is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.