Make CoreProcess.setup() more functional to show dependencies explicitly
This commit is contained in:
parent
5ea3e40594
commit
79729e653b
@ -24,7 +24,7 @@ def main():
|
|||||||
settings.validate()
|
settings.validate()
|
||||||
|
|
||||||
# Explictly call run instead of start, so it runs in this process
|
# Explictly call run instead of start, so it runs in this process
|
||||||
CoreProcess(options).run()
|
CoreProcess().run()
|
||||||
|
|
||||||
def parse_options():
|
def parse_options():
|
||||||
parser = optparse.OptionParser(version='Mopidy %s' % get_version())
|
parser = optparse.OptionParser(version='Mopidy %s' % get_version())
|
||||||
|
|||||||
@ -8,13 +8,12 @@ from mopidy.utils.process import BaseProcess, unpickle_connection
|
|||||||
logger = logging.getLogger('mopidy.core')
|
logger = logging.getLogger('mopidy.core')
|
||||||
|
|
||||||
class CoreProcess(BaseProcess):
|
class CoreProcess(BaseProcess):
|
||||||
def __init__(self, options):
|
def __init__(self):
|
||||||
super(CoreProcess, self).__init__(name='CoreProcess')
|
super(CoreProcess, self).__init__(name='CoreProcess')
|
||||||
self.options = options
|
|
||||||
self.core_queue = multiprocessing.Queue()
|
self.core_queue = multiprocessing.Queue()
|
||||||
self.output_queue = None
|
self.output_queue = None
|
||||||
self.backend = None
|
self.backend = None
|
||||||
self.dispatcher = None
|
self.frontend = None
|
||||||
|
|
||||||
def run_inside_try(self):
|
def run_inside_try(self):
|
||||||
self.setup()
|
self.setup()
|
||||||
@ -23,28 +22,29 @@ class CoreProcess(BaseProcess):
|
|||||||
self.process_message(message)
|
self.process_message(message)
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
self.setup_output()
|
self.output_queue = self.setup_output(self.core_queue)
|
||||||
self.setup_backend()
|
self.backend = self.setup_backend(self.core_queue, self.output_queue)
|
||||||
self.setup_frontend()
|
self.frontend = self.setup_frontend(self.core_queue, self.backend)
|
||||||
|
|
||||||
def setup_output(self):
|
def setup_output(self, core_queue):
|
||||||
self.output_queue = multiprocessing.Queue()
|
output_queue = multiprocessing.Queue()
|
||||||
get_class(settings.OUTPUT)(self.core_queue, self.output_queue)
|
get_class(settings.OUTPUT)(core_queue, output_queue)
|
||||||
|
return output_queue
|
||||||
|
|
||||||
def setup_backend(self):
|
def setup_backend(self, core_queue, output_queue):
|
||||||
self.backend = get_class(settings.BACKENDS[0])(
|
return get_class(settings.BACKENDS[0])(core_queue, output_queue)
|
||||||
self.core_queue, self.output_queue)
|
|
||||||
|
|
||||||
def setup_frontend(self):
|
def setup_frontend(self, core_queue, backend):
|
||||||
frontend = get_class(settings.FRONTENDS[0])()
|
frontend = get_class(settings.FRONTENDS[0])()
|
||||||
frontend.start_server(self.core_queue)
|
frontend.start_server(core_queue)
|
||||||
self.dispatcher = frontend.create_dispatcher(self.backend)
|
frontend.create_dispatcher(backend)
|
||||||
|
return frontend
|
||||||
|
|
||||||
def process_message(self, message):
|
def process_message(self, message):
|
||||||
if message.get('to') == 'output':
|
if message.get('to') == 'output':
|
||||||
self.output_queue.put(message)
|
self.output_queue.put(message)
|
||||||
elif message['command'] == 'mpd_request':
|
elif message['command'] == 'mpd_request':
|
||||||
response = self.dispatcher.handle_request(message['request'])
|
response = self.frontend.dispatcher.handle_request(message['request'])
|
||||||
connection = unpickle_connection(message['reply_to'])
|
connection = unpickle_connection(message['reply_to'])
|
||||||
connection.send(response)
|
connection.send(response)
|
||||||
elif message['command'] == 'end_of_track':
|
elif message['command'] == 'end_of_track':
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user