class Server(Thread): """ XML-RPC server. """ @LogCall() def __init__(self, requestHandler, host="localhost", port=8400): """ Initializes server. @param requestHandler: Request handler for base class calls. @type requestHandler: C{AppsHandler} @param host: Host where to bind. @type host: C{str} @param port: Port where to bind. @type port: C{int} @return: Instance of self. @rtype: C{Server} """ Thread.__init__(self) self.server = MultiPathXMLRPCServer((host, port), requestHandler=RHandler) self.requestHandler= requestHandler(self.server, False) self.dispatcher= SimpleXMLRPCDispatcher() self.dispatcher.register_introspection_functions() self.dispatcher.register_instance(self.requestHandler) self.server.add_dispatcher("/", self.dispatcher) @LogCall({"level": INFO}) def run(self): """ Runs server. @return: Nothing @rtype: C{None} """ self.server.serve_forever() @LogCall({"level": INFO}) def __del__(self): """ Stops server. @return: Nothing @rtype: C{None} """ self.server.shutdown() def GetRequestHandler(self): """ Gets base request handler used with this server. @return: Request handler used with this server. @rtype: C{AppsHandler} """ return self.requestHandler
def __init__(self, requestHandler, host="localhost", port=8400): """ Initializes server. @param requestHandler: Request handler for base class calls. @type requestHandler: C{AppsHandler} @param host: Host where to bind. @type host: C{str} @param port: Port where to bind. @type port: C{int} @return: Instance of self. @rtype: C{Server} """ Thread.__init__(self) self.server = MultiPathXMLRPCServer((host, port), requestHandler=RHandler) self.requestHandler= requestHandler(self.server, False) self.dispatcher= SimpleXMLRPCDispatcher() self.dispatcher.register_introspection_functions() self.dispatcher.register_instance(self.requestHandler) self.server.add_dispatcher("/", self.dispatcher)
"/RPC2", "/random", "/fileserver", "/secret_illuminati_world_domination_plans" ) def decode_request_content(self, data): encoding = self.headers.get("content-encoding", "identity").lower() if encoding != "gzip": self.send_response(501, "encoding %r not supported" % encoding) return SimpleXMLRPCRequestHandler.decode_request_content(self, data) if __name__ == "__main__": server = MultiPathXMLRPCServer(("0.0.0.0", 12345), requestHandler=RequestHandler, allow_none=True, encoding="utf8") random_server = SimpleXMLRPCDispatcher(allow_none=True, encoding="utf8") random_server.register_introspection_functions() random_server.register_instance(RandomServer()) server.add_dispatcher("/random", random_server) file_server = SimpleXMLRPCDispatcher(allow_none=True, encoding="utf8") file_server.register_introspection_functions() file_server.register_instance(FileServer()) server.add_dispatcher("/fileserver", file_server) secret_server = SimpleXMLRPCDispatcher(allow_none=True, encoding="utf8") secret_server.register_introspection_functions() secret_server.register_instance(SecretServer())