XML RPC Client and Server - meet xmlrpc-d
Pavel Kirienko
pavel.kirienko at gmail.com
Sun Sep 1 12:50:46 PDT 2013
Hi everyone,
I am working on some D-based project that needs to call and serve
XML-RPC procedures with multiple output parameters. Quick
lookaround revealed that:
1. There are no XML-RPC servers implemented in D, or wrapped in D;
2. There are some simple XML-RPC clients, but no one supports
methods with multiple output parameters.
So I decided to write ultimate XML-RPC library that could follow
XML-RPC standard as close as ... well, as I could manage it. :)
Grab your copy here: https://github.com/pavel-kirienko/xmlrpc-d
D's compile-time introspection is utterly amazing, it enables
such features as automatic conversion of a value which type is
not known at compile-time to something predefined. This makes
possible to define XML-RPC methods in the simplest way possible
(as regular functions), all the boring job of turning the
function parameters into XML-RPC types and vice versa is carried
out by compiler with the help of the Variant type:
----------
real multiply(real a, real b) { return a * b; }
xmlrpcServer.addMethod!multiply();
----------
Which also makes possble such weird things like that:
----------
// multiply() expects two arguments of type 'real' and returns
'real',
// but we call it with strings:
string ret = client.call!("multiply", string)("6", "9");
----------
Take a look into the 'example' directory on the Github page to
see more examples.
It is worth to mention that this is my first project in D - I was
concurrently studying "The D Programming Language" by Andrei
Alexandrescu (great book Andrei!), thus the code may need some
review.
Good luck with your projects,
Pavel.
More information about the Digitalmars-d-announce
mailing list