From 7f95a3b0ba58bfb919636169a991eb17e1668b7f Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Fri, 20 Aug 2010 03:27:20 +0200 Subject: [PATCH] Move initialization from main to core --- mopidy/__main__.py | 11 +---------- mopidy/core.py | 29 ++++++++++++++++++++--------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/mopidy/__main__.py b/mopidy/__main__.py index e56b82ab..86a4d5c4 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -1,5 +1,4 @@ import logging -import multiprocessing import optparse import os import sys @@ -9,7 +8,6 @@ sys.path.insert(0, from mopidy import get_version, settings, SettingsError from mopidy.core import CoreProcess -from mopidy.utils import get_class from mopidy.utils.log import setup_logging from mopidy.utils.path import get_or_create_folder from mopidy.utils.settings import list_settings_optparse_callback @@ -25,15 +23,8 @@ def main(): get_or_create_folder('~/.mopidy/') settings.validate() - core_queue = multiprocessing.Queue() - output_class = get_class(settings.OUTPUT) - backend_class = get_class(settings.BACKENDS[0]) - frontend = get_class(settings.FRONTENDS[0])() - frontend.start_server(core_queue) - core = CoreProcess(core_queue, output_class, backend_class, frontend) - # Explictly call run instead of start, so it runs in this process - core.run() + CoreProcess(options).run() def parse_options(): parser = optparse.OptionParser(version='Mopidy %s' % get_version()) diff --git a/mopidy/core.py b/mopidy/core.py index 615fde26..0d60b602 100644 --- a/mopidy/core.py +++ b/mopidy/core.py @@ -1,20 +1,19 @@ import logging import multiprocessing +from mopidy import settings +from mopidy.utils import get_class from mopidy.utils.process import BaseProcess, unpickle_connection logger = logging.getLogger('mopidy.core') class CoreProcess(BaseProcess): - def __init__(self, core_queue, output_class, backend_class, frontend): + def __init__(self, options): super(CoreProcess, self).__init__(name='CoreProcess') - self.core_queue = core_queue + self.options = options + self.core_queue = multiprocessing.Queue() self.output_queue = None - self.output_class = output_class - self.backend_class = backend_class - self.output = None self.backend = None - self.frontend = frontend self.dispatcher = None def run_inside_try(self): @@ -24,10 +23,22 @@ class CoreProcess(BaseProcess): self.process_message(message) def setup(self): + self.setup_output() + self.setup_backend() + self.setup_frontend() + + def setup_output(self): self.output_queue = multiprocessing.Queue() - self.output = self.output_class(self.core_queue, self.output_queue) - self.backend = self.backend_class(self.core_queue, self.output_queue) - self.dispatcher = self.frontend.create_dispatcher(self.backend) + get_class(settings.OUTPUT)(self.core_queue, self.output_queue) + + def setup_backend(self): + self.backend = get_class(settings.BACKENDS[0])( + self.core_queue, self.output_queue) + + def setup_frontend(self): + frontend = get_class(settings.FRONTENDS[0])() + frontend.start_server(self.core_queue) + self.dispatcher = frontend.create_dispatcher(self.backend) def process_message(self, message): if message.get('to') == 'output':