'Dispatches the XML-RPC method.
XML-RPC calls are forwarded to a registered function that
matches the called XML-RPC method name. If no such function
exists then the call is forwarded to the registered instance,
if available.
If the registered instance has a _dispatch method then that
method will be called with the name of the XML-RPC method and
its parameters as a tuple
e.g. instance._dispatch(\'add\',(2,3))
If the registered instance does not have a _dispatch method
then the instance will be searched to find a matching method
and, if found, will be called.
Methods beginning with an \'_\' are considered private and will
not be called.'

def _dispatch(self, method, params):

    func = None
    try:
        func = self.funcs[method]
    except KeyError:
        if (self.instance is not None):
            if hasattr(self.instance, '_dispatch'):
                return self.instance._dispatch(method, params)
            try:
                func = resolve_dotted_attribute(self.instance, method, self.allow_dotted_names)
            except AttributeError:
                pass
    if (func is not None):
        return func(*params)
    else:
        raise Exception(('method    "%s"    is    not    supported' % method))
        return
