From ab807e8a0d0ac6978c61a52036eb742fef3dad13 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Wed, 1 Dec 2004 18:34:11 +0000 Subject: [PATCH] Make the example server code clearer; add the corresponding example client. [Bugfix candidate] --- Doc/lib/libsimplexmlrpc.tex | 41 ++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/Doc/lib/libsimplexmlrpc.tex b/Doc/lib/libsimplexmlrpc.tex index 89db62b42da..0170c1a431e 100644 --- a/Doc/lib/libsimplexmlrpc.tex +++ b/Doc/lib/libsimplexmlrpc.tex @@ -88,18 +88,49 @@ simple, stand alone XML-RPC servers. Example: \begin{verbatim} -class MyFuncs: - def div(self, x, y) : return x // y - +from SimpleXMLRPCServer import SimpleXMLRPCServer +# Create server server = SimpleXMLRPCServer(("localhost", 8000)) -server.register_function(pow) -server.register_function(lambda x,y: x+y, 'add') server.register_introspection_functions() + +# Register pow() function; this will use the value of +# pow.__name__ as the name, which is just 'pow'. +server.register_function(pow) + +# Register a function under a different name +def adder_function(x,y): + return x + y +server.register_function(adder_function, 'add') + +# Register an instance; all the methods of the instance are +# published as XML-RPC methods (in this case, just 'div'). +class MyFuncs: + def div(self, x, y): + return x // y + server.register_instance(MyFuncs()) + +# Run the server's main loop server.serve_forever() \end{verbatim} +The following client code will call the methods made available by +the preceding server: + +\begin{verbatim} +import xmlrpclib + +s = xmlrpclib.Server('http://localhost:8000') +print s.pow(2,3) # Returns 2**3 = 8 +print s.add(2,3) # Returns 5 +print s.div(5,2) # Returns 5//2 = 2 + +# Print list of available methods +print s.system.listMethods() +\end{verbatim} + + \subsection{CGIXMLRPCRequestHandler} The \class{CGIXMLRPCRequestHandler} class can be used to