##
11.23.1 SimpleXMLRPCServer Objects

The `SimpleXMLRPCServer` class is based on `SocketServer.TCPServer` and provides a means of creating simple, stand alone XML-RPC servers.

`register_function`( | function[, name])

  Register a function that can respond to XML-RPC requests. If name is given, it will be the method name associated with function, otherwise `function.__name__` will be used. name can be either a normal or Unicode string, and may contain characters not legal in Python identifiers, including the period character.

`register_instance`( | instance)

  Register an object which is used to expose method names which have not been registered using `register_function()`. If instance contains a `_dispatch()` method, it is called with the requested method name and the parameters from the request. Its API is `def `_dispatch`(self, method, params)` (note tha params does not represent a variable argument list). If it calls an underlying function to perform its task, that function is called as `func(*params)`, expanding the parameter list. The return value from `_dispatch()` is returned to the client as the result. If instance does not have a `_dispatch()` method, it is searched for an attribute matching the name of the requested method; if the requested method name contains periods, each component of the method name is searched for individually, with the effect that a simple hierarchical search is performed. The value found from this search is then called with the parameters from the request, and the return value is passed back to the client.

`register_introspection_functions`( | )

  Registers the XML-RPC introspection functions `system.listMethods`, `system.methodHelp` and `system.methodSignature`. New in version 2.3.

`register_multicall_functions`( | )

  Registers the XML-RPC multicall function system.multicall.

Example:

    class MyFuncs:
        def div(self, x, y) : return x // y

    server = SimpleXMLRPCServer(("localhost", 8000))
    server.register_function(pow)
    server.register_function(lambda x,y: x+y, 'add')
    server.register_introspection_functions()
    server.register_instance(MyFuncs())
    server.serve_forever()