diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2013-05-31 12:06:47 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-06-06 13:48:40 +0100 |
commit | e823e1f0675ff3794eb39ef0b4df2d7a220f4013 (patch) | |
tree | fe7f5bf31b8e1abb8b1d08e755d120f211d96241 /lib/bb/server | |
parent | 6db4a64cef20f8d0aba804db4c4e1eec7b112b46 (diff) | |
download | bitbake-contrib-e823e1f0675ff3794eb39ef0b4df2d7a220f4013.tar.gz |
xmlrpc: Allow server to remain memory resident
This patch enables the XMLRPC server to remain
resident in memory after a task is run, and to accept
a new controlling client. To check the server after
task completion, do
lsof bitbake.lock
in the build directory. Kill the server with kill.
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/server')
-rw-r--r-- | lib/bb/server/xmlrpc.py | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/lib/bb/server/xmlrpc.py b/lib/bb/server/xmlrpc.py index 2747ed8bf..0b51ebd20 100644 --- a/lib/bb/server/xmlrpc.py +++ b/lib/bb/server/xmlrpc.py @@ -227,7 +227,6 @@ class BitBakeXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): self.end_headers() self.wfile.write(response) - class BitBakeUIEventServer(threading.Thread): class EventAdapter(): """ @@ -273,9 +272,10 @@ class BitBakeUIEventServer(threading.Thread): if evt: self.connection.event.sendpickle(pickle.dumps(evt)) -class BitBakeXMLRPCEventServerController(SimpleXMLRPCServer): +class BitBakeXMLRPCEventServerController(SimpleXMLRPCServer, threading.Thread): def __init__(self, interface): SimpleXMLRPCServer.__init__(self, interface, logRequests=False, allow_none=True) + threading.Thread.__init__(self) self.register_function(self.registerEventHandler, "registerEventHandler") self.register_function(self.unregisterEventHandler, "unregisterEventHandler") self.register_function(self.terminateServer, "terminateServer") @@ -283,6 +283,7 @@ class BitBakeXMLRPCEventServerController(SimpleXMLRPCServer): self.quit = False self.clients = {} self.client_ui_ids = {} + self.timeout = 1 # timeout for .handle_request() def registerEventHandler(self, host, port): """ @@ -317,13 +318,14 @@ class BitBakeXMLRPCEventServerController(SimpleXMLRPCServer): def runCommand(self, cmd): return None - def serve_forever(self, main_server): - self.main_server = main_server + def run(self): + self.serve_forever() + + def serve_forever(self): while not self.quit: self.handle_request() self.server_close() - class XMLRPCProxyServer(BaseImplServer): """ not a real working server, but a stub for a proxy server connection @@ -368,15 +370,11 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer): def serve_forever(self): # Create and run the event server controller in a separate thread - evt_server_ctrl = BitBakeXMLRPCEventServerController((self.host, self.port + 2)) - self.event_controller_thread = threading.Thread(target = evt_server_ctrl.serve_forever, args = (self,)) + self.event_controller_thread = BitBakeXMLRPCEventServerController((self.host, self.port + 2)) self.event_controller_thread.start() # Start the actual XMLRPC server bb.cooker.server_main(self.cooker, self._serve_forever) - def removeClient(self): - self.commands.removeClient() - def _serve_forever(self): """ Serve Requests. Overloaded to honor a quit command @@ -453,7 +451,7 @@ class BitBakeXMLRPCServerConnection(BitBakeBaseServerConnection): except: pass try: - self.connection.terminateServer() + self.connection.removeClient() except: pass |