diff options
Diffstat (limited to 'lib/bb/server/xmlrpc.py')
-rw-r--r-- | lib/bb/server/xmlrpc.py | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/lib/bb/server/xmlrpc.py b/lib/bb/server/xmlrpc.py index c43c6cde6..a7ac969ae 100644 --- a/lib/bb/server/xmlrpc.py +++ b/lib/bb/server/xmlrpc.py @@ -122,8 +122,7 @@ def _create_server(host, port): return s class BitBakeServerCommands(): - def __init__(self, server, cooker): - self.cooker = cooker + def __init__(self, server): self.server = server def registerEventHandler(self, host, port): @@ -160,11 +159,11 @@ class BitBakeServerCommands(): """ return True -class BitBakeServer(SimpleXMLRPCServer): +class BitBakeXMLRPCServer(SimpleXMLRPCServer): # remove this when you're done with debugging # allow_reuse_address = True - def __init__(self, cooker, interface = ("localhost", 0)): + def __init__(self, interface = ("localhost", 0)): """ Constructor """ @@ -174,9 +173,12 @@ class BitBakeServer(SimpleXMLRPCServer): self._idlefuns = {} self.host, self.port = self.socket.getsockname() #self.register_introspection_functions() - commands = BitBakeServerCommands(self, cooker) - self.autoregister_all_functions(commands, "") + self.commands = BitBakeServerCommands(self) + self.autoregister_all_functions(self.commands, "") + + def addcooker(self, cooker): self.cooker = cooker + self.commands.cooker = cooker def autoregister_all_functions(self, context, prefix): """ @@ -244,14 +246,6 @@ class BitbakeServerInfo(): self.host = server.host self.port = server.port -class BitBakeServerFork(): - def __init__(self, cooker, server, serverinfo, logfile): - daemonize.createDaemon(server.serve_forever, logfile) - -class BitbakeUILauch(): - def launch(self, serverinfo, uifunc, *args): - return uifunc(*args) - class BitBakeServerConnection(): def __init__(self, serverinfo): self.connection = _create_server(serverinfo.host, serverinfo.port) @@ -271,3 +265,31 @@ class BitBakeServerConnection(): self.connection.terminateServer() except: pass + +class BitBakeServer(object): + def initServer(self): + self.server = BitBakeXMLRPCServer() + + def addcooker(self, cooker): + self.cooker = cooker + self.server.addcooker(cooker) + + def getServerIdleCB(self): + return self.server.register_idle_function + + def saveConnectionDetails(self): + self.serverinfo = BitbakeServerInfo(self.server) + + def detach(self, cooker_logfile): + daemonize.createDaemon(self.server.serve_forever, cooker_logfile) + del self.cooker + del self.server + + def establishConnection(self): + self.connection = BitBakeServerConnection(self.serverinfo) + return self.connection + + def launchUI(self, uifunc, *args): + return uifunc(*args) + + |