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:
parent
50cfe42ce0
commit
bcce865ce7
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user