Lookup other actors by their known superclasses

This commit is contained in:
Stein Magnus Jodal 2011-03-09 19:30:12 +01:00
parent 0575d5d3be
commit d8ea7ea884
3 changed files with 15 additions and 12 deletions

View File

@ -5,11 +5,11 @@ import threading
from spotify.manager import SpotifySessionManager as PyspotifySessionManager from spotify.manager import SpotifySessionManager as PyspotifySessionManager
from pykka.registry import ActorRegistry from pykka.registry import ActorRegistry
from pykka.proxy import ActorProxy
from mopidy import get_version, settings from mopidy import get_version, settings
from mopidy.backends.spotify.translator import SpotifyTranslator from mopidy.backends.spotify.translator import SpotifyTranslator
from mopidy.models import Playlist from mopidy.models import Playlist
from mopidy.outputs.base import BaseOutput
from mopidy.utils.process import BaseThread from mopidy.utils.process import BaseThread
logger = logging.getLogger('mopidy.backends.spotify.session_manager') logger = logging.getLogger('mopidy.backends.spotify.session_manager')
@ -28,9 +28,9 @@ class SpotifySessionManager(BaseThread, PyspotifySessionManager):
BaseThread.__init__(self) BaseThread.__init__(self)
self.name = 'SpotifySMThread' self.name = 'SpotifySMThread'
# TODO-PYKKA Get reference to output without hardcoding GStreamerOutput output_refs = ActorRegistry.get_by_class(BaseOutput)
output_refs = ActorRegistry.get_by_class_name('GStreamerOutput') assert len(output_refs) == 1, 'Expected exactly one running output.'
self.output = ActorProxy(output_refs[0]) self.output = output_refs[0].proxy()
self.connected = threading.Event() self.connected = threading.Event()
self.session = None self.session = None

View File

@ -1,8 +1,8 @@
import re import re
from pykka.proxy import ActorProxy
from pykka.registry import ActorRegistry from pykka.registry import ActorRegistry
from mopidy.backends.base import Backend
from mopidy.frontends.mpd.exceptions import (MpdAckError, MpdArgError, from mopidy.frontends.mpd.exceptions import (MpdAckError, MpdArgError,
MpdUnknownCommand) MpdUnknownCommand)
from mopidy.frontends.mpd.protocol import mpd_commands, request_handlers from mopidy.frontends.mpd.protocol import mpd_commands, request_handlers
@ -27,9 +27,9 @@ class MpdDispatcher(object):
def __init__(self, session): def __init__(self, session):
self.session = session self.session = session
# TODO-PYKKA: Get reference to backend in a more generic way backend_refs = ActorRegistry.get_by_class(Backend)
backend_refs = ActorRegistry.get_by_class_name('SpotifyBackend') assert len(backend_refs) == 1, 'Expected exactly one running backend.'
self.backend = ActorProxy(backend_refs[0]) self.backend = backend_refs[0].proxy()
self.command_list = False self.command_list = False
self.command_list_ok = False self.command_list_ok = False

View File

@ -1,16 +1,19 @@
from pykka.actor import ThreadingActor from pykka.actor import ThreadingActor
from pykka.proxy import ActorProxy
from pykka.registry import ActorRegistry from pykka.registry import ActorRegistry
from mopidy.mixers.base import BaseMixer from mopidy.mixers.base import BaseMixer
from mopidy.outputs.base import BaseOutput
class GStreamerSoftwareMixer(ThreadingActor, BaseMixer): class GStreamerSoftwareMixer(ThreadingActor, BaseMixer):
"""Mixer which uses GStreamer to control volume in software.""" """Mixer which uses GStreamer to control volume in software."""
def __init__(self): def __init__(self):
# TODO-PYKKA Get reference to output without hardcoding GStreamerOutput self.output = None
output_refs = ActorRegistry.get_by_class_name('GStreamerOutput')
self.output = ActorProxy(output_refs[0]) def post_start(self):
output_refs = ActorRegistry.get_by_class(BaseOutput)
assert len(output_refs) == 1, 'Expected exactly one running output.'
self.output = output_refs[0].proxy()
def _get_volume(self): def _get_volume(self):
return self.output.get_volume().get() return self.output.get_volume().get()