diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2010-11-13 21:23:54 +0800 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-11-13 21:23:54 +0800 |
commit | 05ba6fc7cb5a389737a238f312f4148e6b837d71 (patch) | |
tree | 7b0d8688095f94fd2010c63f0b0aadff301eccbf /bitbake/lib/bb/server | |
parent | 89929e1f283c8508c505c9731ad933880abf22a1 (diff) | |
download | openembedded-core-05ba6fc7cb5a389737a238f312f4148e6b837d71.tar.gz openembedded-core-05ba6fc7cb5a389737a238f312f4148e6b837d71.tar.bz2 openembedded-core-05ba6fc7cb5a389737a238f312f4148e6b837d71.zip |
bitbake: Rewrite profiling code so its functional for both none and xmlrpc backends
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake/lib/bb/server')
-rw-r--r-- | bitbake/lib/bb/server/none.py | 16 | ||||
-rw-r--r-- | bitbake/lib/bb/server/xmlrpc.py | 19 |
2 files changed, 29 insertions, 6 deletions
diff --git a/bitbake/lib/bb/server/none.py b/bitbake/lib/bb/server/none.py index 14915d9737..38f713c519 100644 --- a/bitbake/lib/bb/server/none.py +++ b/bitbake/lib/bb/server/none.py @@ -109,9 +109,11 @@ class BitBakeServer(): # remove this when you're done with debugging # allow_reuse_address = True - def __init__(self, cooker): + def __init__(self, cooker, pre_serve, post_serve): self._idlefuns = {} self.commands = BitBakeServerCommands(self, cooker) + self.pre_serve = pre_serve + self.post_serve = post_serve def register_idle_function(self, function, data): """Register a function to be called while the server is idle""" @@ -160,9 +162,17 @@ class BitbakeServerInfo(): self.commands = server.commands class BitBakeServerFork(): - def __init__(self, serverinfo, command, logfile): - serverinfo.forkCommand = command + def __init__(self, cooker, server, serverinfo, logfile): serverinfo.logfile = logfile + serverinfo.cooker = cooker + serverinfo.server = server + +class BitbakeUILauch(): + def launch(self, serverinfo, uifunc, *args): + serverinfo.server.pre_serve() + ret = bb.cooker.server_main(serverinfo.cooker, uifunc, *args) + serverinfo.server.post_serve() + return ret class BitBakeServerConnection(): def __init__(self, serverinfo): diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py index cb2949fb9f..30b83d2b13 100644 --- a/bitbake/lib/bb/server/xmlrpc.py +++ b/bitbake/lib/bb/server/xmlrpc.py @@ -87,7 +87,7 @@ class BitBakeServer(SimpleXMLRPCServer): # remove this when you're done with debugging # allow_reuse_address = True - def __init__(self, cooker, interface = ("localhost", 0)): + def __init__(self, cooker, pre_serve, post_serve, interface = ("localhost", 0)): """ Constructor """ @@ -99,6 +99,9 @@ class BitBakeServer(SimpleXMLRPCServer): #self.register_introspection_functions() commands = BitBakeServerCommands(self, cooker) self.autoregister_all_functions(commands, "") + self.cooker = cooker + self.pre_serve = pre_serve + self.post_serve = post_serve def autoregister_all_functions(self, context, prefix): """ @@ -116,9 +119,14 @@ class BitBakeServer(SimpleXMLRPCServer): self._idlefuns[function] = data def serve_forever(self): + bb.cooker.server_main(self.cooker, self._serve_forever) + + def _serve_forever(self): """ Serve Requests. Overloaded to honor a quit command """ + self.pre_serve() + self.quit = False self.timeout = 0 # Run Idle calls for our first callback while not self.quit: @@ -155,6 +163,7 @@ class BitBakeServer(SimpleXMLRPCServer): except: pass + self.post_serve() self.server_close() return @@ -164,8 +173,12 @@ class BitbakeServerInfo(): self.port = server.port class BitBakeServerFork(): - def __init__(self, serverinfo, command, logfile): - daemonize.createDaemon(command, logfile) + 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): |