From bcce865ce751712aa0ebc6e7ddfec1cc39c8ffce Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sat, 9 Nov 2013 14:21:41 +0100 Subject: [PATCH] avahi: Convert MPD and HTTP to use cleaned up versions - Move imports to top as they should be. - Report state based on publish return value. - Remove overly broad except clauses. - Unpublish before stopping servers. --- mopidy/frontends/http/actor.py | 31 ++++++++++++++----------------- mopidy/frontends/mpd/actor.py | 32 ++++++++++++++------------------ 2 files changed, 28 insertions(+), 35 deletions(-) diff --git a/mopidy/frontends/http/actor.py b/mopidy/frontends/http/actor.py index 47602b33..d5c37f09 100644 --- a/mopidy/frontends/http/actor.py +++ b/mopidy/frontends/http/actor.py @@ -11,6 +11,7 @@ from ws4py.server.cherrypyserver import WebSocketPlugin, WebSocketTool from mopidy import models from mopidy.core import CoreListener +from mopidy.utils import zeroconf from . import ws @@ -22,6 +23,7 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener): super(HttpFrontend, self).__init__() self.config = config self.core = core + self.zeroconf_service = None self._setup_server() self._setup_websocket_plugin() app = self._create_app() @@ -90,30 +92,25 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener): logger.debug('Starting HTTP server') cherrypy.engine.start() logger.info('HTTP server running at %s', cherrypy.server.base()) - try: - if self.config_section['zeroconf_enabled']: - name = self.config_section['zeroconf_name'] - from mopidy.utils.zeroconf import Zeroconf - self.service = Zeroconf( - stype="_http._tcp", - name=name, port=self.port, host=self.hostname, - text=["path=/"]) - self.service.publish() + if self.config_section['zeroconf_enabled']: + name = self.config_section['zeroconf_name'] + self.zeroconf_service = zeroconf.Zeroconf( + stype="_http._tcp", name=name, port=self.port, + host=self.hostname) - logger.info('Registered with Avahi as %s', name) - except Exception as e: - logger.warning('Avahi registration failed (%s)', e) + if self.zeroconf_service.publish(): + logger.info('Registered HTTP with zeroconf as %s', name) + else: + logger.warning('Registering HTTP with zeroconf failed.') def on_stop(self): + if self.zeroconf_service: + self.zeroconf_service.unpublish() + logger.debug('Stopping HTTP server') cherrypy.engine.exit() logger.info('Stopped HTTP server') - try: - if self.service: - self.service.unpublish() - except Exception as e: - logger.warning('Avahi unregistration failed (%s)', e) def on_event(self, name, **data): event = data diff --git a/mopidy/frontends/mpd/actor.py b/mopidy/frontends/mpd/actor.py index b252ee2d..51735837 100644 --- a/mopidy/frontends/mpd/actor.py +++ b/mopidy/frontends/mpd/actor.py @@ -7,7 +7,7 @@ import pykka from mopidy.core import CoreListener from mopidy.frontends.mpd import session -from mopidy.utils import encoding, network, process +from mopidy.utils import encoding, network, process, zeroconf logger = logging.getLogger('mopidy.frontends.mpd') @@ -20,6 +20,7 @@ class MpdFrontend(pykka.ThreadingActor, CoreListener): self.config_section = config['mpd'] self.hostname = hostname self.port = port + self.zeroconf_service = None try: network.Server( @@ -40,27 +41,22 @@ class MpdFrontend(pykka.ThreadingActor, CoreListener): logger.info('MPD server running at [%s]:%s', hostname, port) def on_start(self): - try: - if self.config_section['zeroconf_enabled']: - name = self.config_section['zeroconf_name'] + if self.config_section['zeroconf_enabled']: + name = self.config_section['zeroconf_name'] + self.zeroconf_service = zeroconf.Zeroconf( + stype="_mpd._tcp", name=name, port=self.port, + host=self.hostname) - from mopidy.utils.zeroconf import Zeroconf - self.service = Zeroconf( - stype="_mpd._tcp", - name=name, port=self.port, host=self.hostname) - self.service.publish() - - logger.info('Registered with Avahi as %s', name) - except Exception as e: - logger.warning('Avahi registration failed (%s)', e) + if self.zeroconf_service.publish(): + logger.info('Registered MPD with zeroconf as %s', name) + else: + logger.warning('Registering MPD with zeroconf failed.') def on_stop(self): + if self.zeroconf_service: + self.zeroconf_service.unpublish() + process.stop_actors_by_class(session.MpdSession) - try: - if self.service: - self.service.unpublish() - except Exception as e: - logger.warning('Avahi unregistration failed (%s)', e) def send_idle(self, subsystem): listeners = pykka.ActorRegistry.get_by_class(session.MpdSession)