Revision history for Perl extension RPC::XML. 0.37 Fri Mar 22 22:16:08 PST 2002 Applied a patch to RPC::XML::Server from Tino Wuensche (<email@example.com>) that fixed some of the signal-handling and exit-case-handling in server_loop(). Fixed a bug in RPC::XML::Procedure found by a user (a former co-worker from my Denver days, coincidentally enough) that would trigger when auto_methods was set to 1 on a server object, but the request had no matching file anywhere in the search path. 0.36 Tue Jan 29 12:11:30 PST 2002 The file util.pl in the t directory was accidentally omitted from the 0.35 release. This release is meant only to correct that oversight. 0.35 Sun Jan 27 16:29:19 PST 2002 Fixed a small bug in make_method that would have caused a failure if anyone used the command-line switches to specify data, rather than a base-file (specifically, the handling of the --code argument). Also clarified a few places in the man page. Found bugs in both versions of the system.status server method (both the basic and the Apache flavor). Both were neglecting to set the "methods_known" value. Also found a bug in system.methodHelp. Amazing what writing the regression tests can uncover. RPC::XML::Method is now a skeleton file, slated to be removed by or before 1.0. It has been renamed to RPC::XML::Procedure, and the RPC::XML::Method class is declared as an empty subclass of the RPC::XML::Procedure class. Procedures differ from methods in that they do not get the server object instance as a first parameter in the list that gets passed in. Support for RPC::XML::Procedure (and general procedure vs. method) added to the DTD and the make_method tool. All the routines in the ex/ directory are declared as procedures, to further illustrate the concept. When code blocks for XPL files are eval'd, they are given a "package" statement to force subsequent calls to be in the RPC::XML::Pprocedure namespace, rather than defaulting to main (a potentially dangerous assumption). The docs on routine-calling in RPC::XML::Server have been updated to discuss this. Many more tests added to the suite for RPC::XML::Server. Created the test suite for RPC::XML::Client. RPC::XML::Client no longer returns a full RPC::XML::response object from any of its routines. Rather, simple_request still does what it always has, and send_request now returns a data-type value. All the data-type classes have a method called "is_fault" that returns false for all except (of course) RPC::XML::fault. This lets callers of send_request test the return value to see if it is a fault. Added callback support for errors and faults to the RPC::XML::Client class. This allows programmers to tie specific actions to cases where a call returns a RPC::XML::fault object, or an outright error. Created a separate test suite for RPC::XML::Server when used in conjunction with the Net::Server package (it skips if the latter is not installed on the system). Almost all of the method-manipulation routines in RPC::XML::Server (all but add_default_methods()) now have counterparts called by the same name after s/method/proc/. This is purely for syntactical sugar and symmetry. Except in the case of add_proc(), where it actually ensures that a hash-reference calling convention is geared correctly to add a RPC::XML::Procedure object rather than RPC::XML::Method. 0.30 Thu Jan 3 01:57:29 PST 2002 - first beta release Apache::RPC::Server::list_servers no longer sorts the list before returning it. No reason to assume it matters, or to levy that tax against those who don't care. RPC::XML::Server::url now constructs saner strings for HTTPS and for HTTP on port 80. The new() method in RPC::XML::Server wasn't quite handling the "host" and "port" arguments that Apache::RPC::Server sent it correctly. Added a patch to the RPC::XML::Server class from Christopher Blizzard (firstname.lastname@example.org) to allow control over the timeout interval that HTTP::Daemon uses in answering new connections. Replaced a GNU Make-centric dependancy rule for the XPL files with a more portable .SUFFIXES-based one. This is unfortunate, as the % syntax of GNU make is much cleaner. But GNU Make isn't universal. Yet. This release marks the debut of Apache::RPC::Status, a monitor similar in nature and design to Apache::Status, for running RPC servers under Apache/mod_perl. See the manual page for details. Documentation for Apache::RPC::Server was updated based on trials and travails in trying to actually set up a configuration inside <Perl> blocks. This isn't very clear in the mod_perl documentation, but at least the docs for this module reflect exactly what I have configured on my development box, so I know it works. 0.29 Sun Dec 2 22:41:39 PST 2001 Added share_methods(), copy_methods() and delete_method() calls to the RPC::XML::Server class (and thus to the Apache class as well). Had already added an INSTALL_DIR method to retrieve the class-specific installation dir to the Apache class, so mirrored it here, as well. Added list_servers() static method to Apache::RPC::Server, to allow for abstract retrieval of the ID-tags of the current known servers. This is mainly so Apache::RPC::Status can use it in conjunction with get_server() to examine the server objects for the sake of stats and such. Added list_methods() to RPC::XML::Server, to list the object's known (published) methods by name. Mainly for use in the regression suites, but worth documenting in the API in case someone else finds it useful. Four of the provided methods in the introspection API (system.introspection, system.listMethods, system.methodHelp and system.methodSignature) needed to be updated to use the newer API for the XML::RPC::Method class when retrieving information from the server. Started the test suites for RPC::XML::Method and RPC::XML::Server. The tests that are delivered as part of this build are not fully complete, but should be a reasonable start. 0.28 Sun Oct 7 21:27:39 PDT 2001 Found a subtle-but-nasty bug in the handling of RPC::XML::string objects. Thanks to Dominic Mitchell <email@example.com> for pointing me in the right direction. Started down the path of making the suite as a whole geared more towards real use than illustrative example. The XML data-classes now no longer use indention (or any superfluous whitespace) in their stringification. This shortened the code quite a bit, and will also mean shorter messages. This could not have been done cleanly without the tests in t/10_data.t. Extracted the method-manipulation code into a new class, called RPC::XML::Method. This should make method-sharing easier, and pull a lot of method-specific code out of RPC::XML::Server and Apache::RPC::Server. Clarified some issues in the new() constructor of the Apache::RPC::Server class, and also changed the calling convention. It no longer treats the first few arguments in any special way at all. The arguments are all consistently taken as option/value pairs, just as with RPC::XML::Server. The documentation reflects this. This may break things built on the old style, but in the long run it should prove much better. 0.27 Sun Jul 8 16:25:51 PDT 2001 Removed a -w warning from RPC/XML.pm. Fixed some cases in the new() method of RPC::XML::boolean that would have permitted invalid data. Added two convenience methods to RPC::XML::fault, called code() and string(), that fetch the faultCode and faultString member values as native Perl values. The RPC::XML::base64 class was using the wrong container tags in the as_string method. Clarified and expanded some of the documentation in RPC/XML/Server.pm. Adjusted the PREREQ_PM hash in Makefile.PL so that it correctly looks for LWP, and also looks for File::Spec 0.8 or newer (needed to ensure that the splitpath() method is available). Cleaned up the load-tests (t/00_load.t) to use the Test harnessing package. Added test suites for the RPC::XML data classes (t/10_data.t, 96 tests) and the RPC::XML::Parser container-class (t/20_parser.t, 7 tests). 0.26 Mon Jun 25 22:30:18 PDT 2001 Fixed some doc errors in RPC::XML::Server. Mainly things I had simplified, but not updated the docs to reflect. Added a fair amount to the docs in Apache::RPC::Server. In particular, a new section was added that illustrates using <Perl> configuration sections to create the server objects in the master Apache process, so that they are automatically inherited by children. 0.25 Tue Jun 12 22:35:09 PDT 2001 This is the initial release.