Overview
--------

This is an IDL compiler written in OCaml that generates OCaml code to implement
the Xen Management API for both client and server, connected to each other via
XML RPC.

This compiler generates code to marshal the necessary types to and from XML,
using the XML Light library.

The generated code totals around 4kLOC, takes ~3s to compile to native code
and results in a 650k 64-bit binary.

Building this project generates example clients and servers. The test_server
program applies a fake RPC module to the client functor to generate a Hooker
module that can be used for incremental development of a real server. The
test_client module is a simple OCaml client that invokes a single remote
procedure call over XML-RPC and http. The python directory contains a tiny
python program that invokes the same call but the use of a third-party XML-RPC
library gives more credibility to our generated XML-RPC bindings.


Build
-----

The compiler requires the datamodel description and back-end API generator from
the directory above. Make those first.

Build in this directory using:

  omake

Documentation for the API, client and server bindings and for the XML-RPC
marshalling code can be built using:

  omake doc

the former goes in "./doc" and the latter in "./xmlrpc_doc".
