Table of Contents

1.1. Installation
1.1.1. How to obtain ulxmlrpcpp
1.1.2. Requirements
1.1.3. Compilation and installation
1.1.4. Creating and Installing an RPM
1.1.5. Installing on other systems

1.1. Installation

1.1.1. How to obtain ulxmlrpcpp

Major releases and bug fixes of ulxmlrpcpp can be found in the download area of its homepage.

There is also the possibility to update from anonymous cvs to obtain the most recent sources.

1.1.2. Requirements

In order to successfully compile ulxmlrpcpp, you need the expat library. expat should already be contained in every distribution. Otherwise you can download it from http://expat.sourceforge.net.

1.1.3. Compilation and installation

In order to compile and install ulxmlrpcpp on your system, type the following in the base directory of the ulxmlrpcpp distribution:

% ./configure
% make
% make install

There are some options for configure you might be interested in:

--enable-unicode

By default ulxmlrpcpp uses standard 8bit wide strings (std::string and const char* to be more precise). If you need basic support for Unicode and it's 16bit or 32bit wide characters you must add this parameter when invoking configure.

--enable-epoll

By default ulxmlrpcpp uses calls to select() to find out about availability of data from a socket. There are resource limitations on this call. On Linux systems with kernel 2.6 and later you might want to enable the usage of epoll() instead.

--enable-log4j

ulxmlrpcpp contains a simple helper class that uses logging features taken from Log4J. On startup you need to invoke ulxr::intializeLog4J(argv[0]) to initialize logging and afterwards every call to ulxr::getLogger4J()->send(level, message) will send a debug message encapsulated in an XML structure over the network to the local port 4448. Chainsaw can be used as logging host to view the messages when an XMLSocketReceiver is configured.

The above option uses this logging feature to send the internal debugging messages not to the console output but instead to a logging host. But for this to take effect you also need to #define the various ULXR_DEBUG_... and ULXR_SHOW_... macros in the according source files. To enable globally you can enable the predefined macros in ulxmlrpcpp.h or the according config-... files.

To run the tests and examples type the following and change to the subdirectory "tests" afterwards:

% make check

You will find some validator applications and some client/server pairs. For example val1_server and val1_client which implement the test suite from XML-RPC.

Since ulxmlrpcpp uses autoconf you should have not trouble compiling it. Should you run into problems please report them to the the author at ulxmlrpcpp at ewald-arnold dot de

1.1.4. Creating and Installing an RPM

Using the previous installation procedure has drawacks when you want do uninstall or upgrade to a newer version. Maybe you rather want to benefit from the common mechanism provided by rpm. Before installing the library this way you need to create rpm packages which requires some developer tools like doxygen or docbook and a bit of experience in this matter.

This can be done by running the following command in the top level directory of the source distribution:

 % make rpm

After completion you will receive two rpm packages: one for the library and the headers and one for the documentation. They are usually located at /usr/src/packages/RPMS.

In case you are using a Red Hat Fedora distribution you should better use the optimized rpm file rpm/fedora/ulxmlrpcpp.spec.

1.1.5. Installing on other systems

If you are using a compiler on a platform not directly supported you must set up your own project files for your compiler. All adjustments are done in ulxmlrpcpp.h. To benefit from updates it is of course better to move your own settings to a configuration file and include it.

See config-bcb5.h as an example for Borland's CBuilder.

[Note]Once you have ported ulxmlrpcpp to a new platform:

Please send me your files for inclusion in the next distribution. You will certainly make some people happy with this.