self.featurelist = featurelist
self.quit = False
- self.keep_running = Event()
- self.keep_running.set()
+ self.quitin, self.quitout = Pipe()
self.event_handle = multiprocessing.Value("i")
def run(self):
def main(self):
# Ignore SIGINT within the server, as all SIGINT handling is done by
# the UI and communicated to us
+ self.quitin.close()
signal.signal(signal.SIGINT, signal.SIG_IGN)
- while self.keep_running.is_set():
+ while not self.quit:
try:
if self.command_channel.poll():
command = self.command_channel.recv()
self.runCommand(command)
+ if self.quitout.poll():
+ self.quitout.recv()
+ self.quit = True
- self.idle_commands(.1, [self.event_queue._reader, self.command_channel])
+ self.idle_commands(.1, [self.event_queue._reader, self.command_channel, self.quitout])
except Exception:
logger.exception('Running command %s', command)
self.command_channel.send(self.cooker.command.runCommand(command))
def stop(self):
- self.keep_running.clear()
+ self.quitin.send("quit")
+ self.quitin.close()
class BitBakeProcessServerConnection(BitBakeBaseServerConnection):
def __init__(self, serverImpl, ui_channel, event_queue):