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 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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user