From cd3c4292e7ccc8934f229fcf010f8615398b87b5 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 8 Jun 2011 09:34:12 +0100 Subject: bitbake: Cleanup bitbake server init process to be clearer to follow Create a standard format server class instance with method calls for each step in the server setup. There should be enough hooks for each of the different server types. Signed-off-by: Richard Purdie --- bitbake/lib/bb/server/none.py | 59 +++++++++++++++++++++++++---------------- bitbake/lib/bb/server/xmlrpc.py | 50 ++++++++++++++++++++++++---------- 2 files changed, 72 insertions(+), 37 deletions(-) (limited to 'bitbake/lib/bb/server') diff --git a/bitbake/lib/bb/server/none.py b/bitbake/lib/bb/server/none.py index 45cda2f5f4..6083631fe7 100644 --- a/bitbake/lib/bb/server/none.py +++ b/bitbake/lib/bb/server/none.py @@ -36,8 +36,7 @@ DEBUG = False import inspect, select class BitBakeServerCommands(): - def __init__(self, server, cooker): - self.cooker = cooker + def __init__(self, server): self.server = server def runCommand(self, command): @@ -106,13 +105,17 @@ class BBUIEventQueue: def chldhandler(signum, stackframe): pass -class BitBakeServer(): +class BitBakeNoneServer(): # remove this when you're done with debugging # allow_reuse_address = True - def __init__(self, cooker): + def __init__(self): self._idlefuns = {} - self.commands = BitBakeServerCommands(self, cooker) + self.commands = BitBakeServerCommands(self) + + def addcooker(self, cooker): + self.cooker = cooker + self.commands.cooker = cooker def register_idle_function(self, function, data): """Register a function to be called while the server is idle""" @@ -157,25 +160,10 @@ class BitBakeServer(): except: pass -class BitbakeServerInfo(): - def __init__(self, server): - self.server = server - self.commands = server.commands - -class BitBakeServerFork(): - def __init__(self, cooker, server, serverinfo, logfile): - serverinfo.logfile = logfile - serverinfo.cooker = cooker - serverinfo.server = server - -class BitbakeUILauch(): - def launch(self, serverinfo, uifunc, *args): - return bb.cooker.server_main(serverinfo.cooker, uifunc, *args) - class BitBakeServerConnection(): - def __init__(self, serverinfo): - self.server = serverinfo.server - self.connection = serverinfo.commands + def __init__(self, server): + self.server = server.server + self.connection = self.server.commands self.events = bb.server.none.BBUIEventQueue(self.server) for event in bb.event.ui_queue: self.events.queue_event(event) @@ -189,3 +177,28 @@ class BitBakeServerConnection(): self.connection.terminateServer() except: pass + +class BitBakeServer(object): + def initServer(self): + self.server = BitBakeNoneServer() + + def addcooker(self, cooker): + self.cooker = cooker + self.server.addcooker(cooker) + + def getServerIdleCB(self): + return self.server.register_idle_function + + def saveConnectionDetails(self): + return + + def detach(self, cooker_logfile): + self.logfile = cooker_logfile + + def establishConnection(self): + self.connection = BitBakeServerConnection(self) + return self.connection + + def launchUI(self, uifunc, *args): + return bb.cooker.server_main(self.cooker, uifunc, *args) + diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py index e7b6010874..4a16f9d525 100644 --- a/bitbake/lib/bb/server/xmlrpc.py +++ b/bitbake/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) + + -- cgit v1.2.3-54-g00ecf