RPC::XML - An implementation of XML-RPC

Version: 0.57

WHAT IS IT

The RPC::XML package is an implementation of XML-RPC. The module provides
classes for sample client and server implementations, a server designed as an
Apache location-handler, and a suite of data-manipulation classes that are
used by them.


USING RPC::XML

There are not any pre-packaged executables in this distribution (except for a
utility tool). Client usage will usually be along the lines of:

    use RPC::XML::Client;
    ...
    my $client = new RPC::XML::Client
        'http://www.oreillynet.com/meerkat/xml-rpc/server.php';
    my $req = RPC::XML::request->new('meerkat.getChannelsBySubstring', 'perl');
    my $res = $client->send_request($req);
    # This returns an object of the RPC::XML::response class. This double-call
    # of value() first gets a RPC::XML::* data object from the response, then
    # the actual data from it:
    my $value = $res->value->value;

Running a simple server is not much more involved:

    use RPC::XML::Server;
    ...
    my $srv = new RPC::XML::Server (host => 'localhost',
                                    port => 9000);
    # You would then use $srv->add_method to add some remotely-callable code
    ...
    $srv->accept_loop; # Stays in an accept/connect loop


BUILDING/INSTALLING

This package is set up to configure and build like a typical Perl extension.
To build:

        perl Makefile.PL
        make && make test

If RPC::XML passes all tests, then:

        make install

You may need super-user access to install.


PROBLEMS/BUG REPORTS

Please send any reports of problems or bugs to rjray@blackperl.com


SEE ALSO

XML-RPC:              http://www.xmlrpc.com/spec
The Artistic License: http://www.opensource.org/licenses/artistic-license.php


CHANGES

lib/Apache/RPC/Server.pm:
Some minor changes to how values are read from the configuration, to
reduce "use of uninitialized value" warnings in regex operations.

lib/RPC/XML.pm:
t/10_data.t:
Based on a report from Brian Phillips, made adjustments in the
smart_encode helper-routine to deal with blessed references. Anything
that is derived from HASH or ARRAY is encoded as a struct or array,
respectively. Anything derived from SCALAR is dereferenced and encoded
as per usual. Carried this over to the class constructors, with special
attention to the RPC::XML::simple_type class. Added tests to the suite
for all of this, as well.

lib/Apache/RPC/status.base:
lib/Apache/RPC/status.code:
lib/Apache/RPC/status.help:
lib/RPC/XML/Procedure.pm:
lib/RPC/XML/Server.pm:
methods/status.base:
methods/status.code:
methods/status.help:
t/40_server.t:
The "system.status" method (both the general one and the one that is
specific to Apache) now recognizes an optional boolean parameter that
can keep the status call from counting against the "total_requests"
struct value. This is to allow external monitors (status, health, etc.)
to use that call without running up the value of that field needlessly.
