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.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

View File

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