diff options
Diffstat (limited to 'bitbake/lib/bb/server/xmlrpc.py')
-rw-r--r-- | bitbake/lib/bb/server/xmlrpc.py | 60 |
1 files changed, 52 insertions, 8 deletions
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py index 1a475e04ba..6874765136 100644 --- a/bitbake/lib/bb/server/xmlrpc.py +++ b/bitbake/lib/bb/server/xmlrpc.py | |||
@@ -49,7 +49,6 @@ from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler | |||
49 | import bb | 49 | import bb |
50 | from bb import daemonize | 50 | from bb import daemonize |
51 | from bb.ui import uievent | 51 | from bb.ui import uievent |
52 | from . import BitBakeBaseServer, BitBakeBaseServerConnection, BaseImplServer | ||
53 | 52 | ||
54 | DEBUG = False | 53 | DEBUG = False |
55 | 54 | ||
@@ -193,15 +192,25 @@ class BitBakeXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): | |||
193 | self.wfile.write(bytes(response, 'utf-8')) | 192 | self.wfile.write(bytes(response, 'utf-8')) |
194 | 193 | ||
195 | 194 | ||
196 | class XMLRPCProxyServer(BaseImplServer): | 195 | class XMLRPCProxyServer(object): |
197 | """ not a real working server, but a stub for a proxy server connection | 196 | """ not a real working server, but a stub for a proxy server connection |
198 | 197 | ||
199 | """ | 198 | """ |
200 | def __init__(self, host, port, use_builtin_types=True): | 199 | def __init__(self, host, port, use_builtin_types=True): |
201 | self.host = host | 200 | self.host = host |
202 | self.port = port | 201 | self.port = port |
202 | self._idlefuns = {} | ||
203 | 203 | ||
204 | class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer): | 204 | def addcooker(self, cooker): |
205 | self.cooker = cooker | ||
206 | |||
207 | def register_idle_function(self, function, data): | ||
208 | """Register a function to be called while the server is idle""" | ||
209 | assert hasattr(function, '__call__') | ||
210 | self._idlefuns[function] = data | ||
211 | |||
212 | |||
213 | class XMLRPCServer(SimpleXMLRPCServer): | ||
205 | # remove this when you're done with debugging | 214 | # remove this when you're done with debugging |
206 | # allow_reuse_address = True | 215 | # allow_reuse_address = True |
207 | 216 | ||
@@ -209,7 +218,7 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer): | |||
209 | """ | 218 | """ |
210 | Constructor | 219 | Constructor |
211 | """ | 220 | """ |
212 | BaseImplServer.__init__(self) | 221 | self._idlefuns = {} |
213 | self.single_use = single_use | 222 | self.single_use = single_use |
214 | # Use auto port configuration | 223 | # Use auto port configuration |
215 | if (interface[1] == -1): | 224 | if (interface[1] == -1): |
@@ -231,7 +240,7 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer): | |||
231 | self.next_heartbeat = time.time() | 240 | self.next_heartbeat = time.time() |
232 | 241 | ||
233 | def addcooker(self, cooker): | 242 | def addcooker(self, cooker): |
234 | BaseImplServer.addcooker(self, cooker) | 243 | self.cooker = cooker |
235 | self.commands.cooker = cooker | 244 | self.commands.cooker = cooker |
236 | 245 | ||
237 | def autoregister_all_functions(self, context, prefix): | 246 | def autoregister_all_functions(self, context, prefix): |
@@ -335,7 +344,13 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer): | |||
335 | def set_connection_token(self, token): | 344 | def set_connection_token(self, token): |
336 | self.connection_token = token | 345 | self.connection_token = token |
337 | 346 | ||
338 | class BitBakeXMLRPCServerConnection(BitBakeBaseServerConnection): | 347 | def register_idle_function(self, function, data): |
348 | """Register a function to be called while the server is idle""" | ||
349 | assert hasattr(function, '__call__') | ||
350 | self._idlefuns[function] = data | ||
351 | |||
352 | |||
353 | class BitBakeXMLRPCServerConnection(object): | ||
339 | def __init__(self, serverImpl, clientinfo=("localhost", 0), observer_only = False, featureset = None): | 354 | def __init__(self, serverImpl, clientinfo=("localhost", 0), observer_only = False, featureset = None): |
340 | self.connection, self.transport = _create_server(serverImpl.host, serverImpl.port) | 355 | self.connection, self.transport = _create_server(serverImpl.host, serverImpl.port) |
341 | self.clientinfo = clientinfo | 356 | self.clientinfo = clientinfo |
@@ -388,7 +403,7 @@ class BitBakeXMLRPCServerConnection(BitBakeBaseServerConnection): | |||
388 | except: | 403 | except: |
389 | pass | 404 | pass |
390 | 405 | ||
391 | class BitBakeServer(BitBakeBaseServer): | 406 | class BitBakeServer(object): |
392 | def initServer(self, interface = ("localhost", 0), | 407 | def initServer(self, interface = ("localhost", 0), |
393 | single_use = False, idle_timeout=0): | 408 | single_use = False, idle_timeout=0): |
394 | self.interface = interface | 409 | self.interface = interface |
@@ -405,7 +420,20 @@ class BitBakeServer(BitBakeBaseServer): | |||
405 | def set_connection_token(self, token): | 420 | def set_connection_token(self, token): |
406 | self.connection.transport.set_connection_token(token) | 421 | self.connection.transport.set_connection_token(token) |
407 | 422 | ||
408 | class BitBakeXMLRPCClient(BitBakeBaseServer): | 423 | def addcooker(self, cooker): |
424 | self.cooker = cooker | ||
425 | self.serverImpl.addcooker(cooker) | ||
426 | |||
427 | def getServerIdleCB(self): | ||
428 | return self.serverImpl.register_idle_function | ||
429 | |||
430 | def saveConnectionDetails(self): | ||
431 | return | ||
432 | |||
433 | def endSession(self): | ||
434 | self.connection.terminate() | ||
435 | |||
436 | class BitBakeXMLRPCClient(object): | ||
409 | 437 | ||
410 | def __init__(self, observer_only = False, token = None): | 438 | def __init__(self, observer_only = False, token = None): |
411 | self.token = token | 439 | self.token = token |
@@ -446,3 +474,19 @@ class BitBakeXMLRPCClient(BitBakeBaseServer): | |||
446 | 474 | ||
447 | def endSession(self): | 475 | def endSession(self): |
448 | self.connection.removeClient() | 476 | self.connection.removeClient() |
477 | |||
478 | def initServer(self): | ||
479 | self.serverImpl = None | ||
480 | self.connection = None | ||
481 | return | ||
482 | |||
483 | def addcooker(self, cooker): | ||
484 | self.cooker = cooker | ||
485 | self.serverImpl.addcooker(cooker) | ||
486 | |||
487 | def getServerIdleCB(self): | ||
488 | return self.serverImpl.register_idle_function | ||
489 | |||
490 | def detach(self): | ||
491 | return | ||
492 | |||