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.
This commit is contained in:
Thomas Adamcik 2013-11-09 14:21:41 +01:00
parent 50cfe42ce0
commit bcce865ce7
2 changed files with 28 additions and 35 deletions

View File

@ -11,6 +11,7 @@ from ws4py.server.cherrypyserver import WebSocketPlugin, WebSocketTool
from mopidy import models from mopidy import models
from mopidy.core import CoreListener from mopidy.core import CoreListener
from mopidy.utils import zeroconf
from . import ws from . import ws
@ -22,6 +23,7 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener):
super(HttpFrontend, self).__init__() super(HttpFrontend, self).__init__()
self.config = config self.config = config
self.core = core self.core = core
self.zeroconf_service = None
self._setup_server() self._setup_server()
self._setup_websocket_plugin() self._setup_websocket_plugin()
app = self._create_app() app = self._create_app()
@ -90,30 +92,25 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener):
logger.debug('Starting HTTP server') logger.debug('Starting HTTP server')
cherrypy.engine.start() cherrypy.engine.start()
logger.info('HTTP server running at %s', cherrypy.server.base()) 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 if self.config_section['zeroconf_enabled']:
self.service = Zeroconf( name = self.config_section['zeroconf_name']
stype="_http._tcp", self.zeroconf_service = zeroconf.Zeroconf(
name=name, port=self.port, host=self.hostname, stype="_http._tcp", name=name, port=self.port,
text=["path=/"]) host=self.hostname)
self.service.publish()
logger.info('Registered with Avahi as %s', name) if self.zeroconf_service.publish():
except Exception as e: logger.info('Registered HTTP with zeroconf as %s', name)
logger.warning('Avahi registration failed (%s)', e) else:
logger.warning('Registering HTTP with zeroconf failed.')
def on_stop(self): def on_stop(self):
if self.zeroconf_service:
self.zeroconf_service.unpublish()
logger.debug('Stopping HTTP server') logger.debug('Stopping HTTP server')
cherrypy.engine.exit() cherrypy.engine.exit()
logger.info('Stopped HTTP server') 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): def on_event(self, name, **data):
event = data event = data

View File

@ -7,7 +7,7 @@ import pykka
from mopidy.core import CoreListener from mopidy.core import CoreListener
from mopidy.frontends.mpd import session 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') logger = logging.getLogger('mopidy.frontends.mpd')
@ -20,6 +20,7 @@ class MpdFrontend(pykka.ThreadingActor, CoreListener):
self.config_section = config['mpd'] self.config_section = config['mpd']
self.hostname = hostname self.hostname = hostname
self.port = port self.port = port
self.zeroconf_service = None
try: try:
network.Server( network.Server(
@ -40,27 +41,22 @@ class MpdFrontend(pykka.ThreadingActor, CoreListener):
logger.info('MPD server running at [%s]:%s', hostname, port) logger.info('MPD server running at [%s]:%s', hostname, port)
def on_start(self): def on_start(self):
try: if self.config_section['zeroconf_enabled']:
if self.config_section['zeroconf_enabled']: name = self.config_section['zeroconf_name']
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 if self.zeroconf_service.publish():
self.service = Zeroconf( logger.info('Registered MPD with zeroconf as %s', name)
stype="_mpd._tcp", else:
name=name, port=self.port, host=self.hostname) logger.warning('Registering MPD with zeroconf failed.')
self.service.publish()
logger.info('Registered with Avahi as %s', name)
except Exception as e:
logger.warning('Avahi registration failed (%s)', e)
def on_stop(self): def on_stop(self):
if self.zeroconf_service:
self.zeroconf_service.unpublish()
process.stop_actors_by_class(session.MpdSession) 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): def send_idle(self, subsystem):
listeners = pykka.ActorRegistry.get_by_class(session.MpdSession) listeners = pykka.ActorRegistry.get_by_class(session.MpdSession)