Pass output, backend and frontend classes into coreprocess to so that import errors are handeled better

This commit is contained in:
Thomas Adamcik 2010-08-13 22:48:51 +02:00
parent 9c11c5ecb9
commit a05212251b
2 changed files with 12 additions and 7 deletions

View File

@ -22,7 +22,10 @@ def main():
get_or_create_folder('~/.mopidy/')
core_queue = multiprocessing.Queue()
get_class(settings.SERVER)(core_queue).start()
core = CoreProcess(core_queue)
output_class = get_class(settings.OUTPUT)
backend_class = get_class(settings.BACKENDS[0])
frontend_class = get_class(settings.FRONTEND)
core = CoreProcess(core_queue, output_class, backend_class, frontend_class)
core.start()
asyncore.loop()

View File

@ -37,10 +37,14 @@ class BaseProcess(multiprocessing.Process):
class CoreProcess(BaseProcess):
def __init__(self, core_queue):
def __init__(self, core_queue, output_class, backend_class,
frontend_class):
super(CoreProcess, self).__init__()
self.core_queue = core_queue
self.output_queue = None
self.output_class = output_class
self.backend_class = backend_class
self.frontend_class = frontend_class
self.output = None
self.backend = None
self.frontend = None
@ -53,11 +57,9 @@ class CoreProcess(BaseProcess):
def setup(self):
self.output_queue = multiprocessing.Queue()
self.output = get_class(settings.OUTPUT)(self.core_queue,
self.output_queue)
self.backend = get_class(settings.BACKENDS[0])(self.core_queue,
self.output_queue)
self.frontend = get_class(settings.FRONTEND)(self.backend)
self.output = self.output_class(self.core_queue, self.output_queue)
self.backend = self.backend_class(self.core_queue, self.output_queue)
self.frontend = self.frontend_class(self.backend)
def process_message(self, message):
if message.get('to') == 'output':