Move initialization from main to core

This commit is contained in:
Stein Magnus Jodal 2010-08-20 03:27:20 +02:00
parent 51b5910e68
commit 7f95a3b0ba
2 changed files with 21 additions and 19 deletions

View File

@ -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())

View File

@ -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':