1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-30 12:29:55 +00:00

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 <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2011-06-08 09:34:12 +01:00
parent e386fe4542
commit cd3c4292e7
5 changed files with 92 additions and 53 deletions
+36 -14
View File
@@ -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)