# pathos.xmlrpc module documentation

## server module

This module contains the base class for pathos XML-RPC servers, and derives from python’s SimpleXMLRPCServer, and the base class for XML-RPC request handlers, which derives from python’s base HTTP request handler.

### Usage

A typical setup for an XML-RPC server will roughly follow this example:

    >>> # establish a XML-RPC server on a host at a given port
    >>> host = 'localhost'
    >>> port = 1234
    >>> server = XMLRPCServer(host, port)
    >>> print('port=%d' % server.port)
    >>>
    >>> # register a method the server can handle requests for
    >>> def add(x, y):
    ...     return x + y
    >>> server.register_function(add)
    >>>
    >>> # activate the callback methods and begin serving requests
    >>> server.activate()
    >>> server.serve()

The following is an example of how to make requests to the above server:

    >>> # establish a proxy connection to the server at (host,port)
    >>> host = 'localhost'
    >>> port = 1234
    >>> proxy = xmlrpclib.ServerProxy('http://%s:%d' % (host, port))
    >>> print('1 + 2 = %s' % proxy.add(1, 2))
    >>> print('3 + 4 = %s' % proxy.add(3, 4))

class XMLRPCRequestHandler(server, socket)

  Bases: `BaseHTTPRequestHandler`

  create a XML-RPC request handler

  Override BaseHTTPRequestHandler.__init__(): we need to be able to have (potentially) multiple handler objects at a given time.

  Inputs:

    server – server object to handle requests for socket – socket connection

  _debug = <Logger pathos.xmlrpc (WARNING)>
  _sendResponse(response)

    Write the XML-RPC response

  do_POST()

    Access point from HTTP handler

  log_message(format, *args)

    Overriding BaseHTTPRequestHandler.log_message()

class XMLRPCServer(host, port)

  Bases: `Server`, `SimpleXMLRPCDispatcher`

  extends base pathos server to an XML-RPC dispatcher

  create a XML-RPC server

  Takes two initial inputs:

    host – hostname of XML-RPC server host port – port number for server requests

  _handleMessageFromChild(selector, fd)

    handler for message from a child process

  _installSocket(host, port)

    prepare a listening socket

  _marshaled_dispatch(data, dispatch_method=None)

    override SimpleXMLRPCDispatcher._marshaled_dispatch() fault string

  _onConnection(selector, fd)

    upon socket connection, establish a request handler

  _onSelectorIdle(selector)

    something to do when there’s no requests

  _onSocketConnection(socket)

    upon socket connections, establish a request handler

  _registerChild(pid, fromchild)

    register a child process so it can be retrieved on select events

  _unRegisterChild(fd)

    remove a child process from active process register

  activate()

    install callbacks

  serve()

    enter the select loop… and wait for service requests