Ensure that PKC signals playback stop on shutdown
This commit is contained in:
parent
502c013af0
commit
7100802cab
2 changed files with 16 additions and 2 deletions
|
@ -157,11 +157,14 @@ class PlexCompanion(Thread):
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""
|
"""
|
||||||
Ensure that sockets will be closed no matter what
|
Ensure that
|
||||||
|
- STOP sent to PMS
|
||||||
|
- sockets will be closed no matter what
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
self._run()
|
self._run()
|
||||||
finally:
|
finally:
|
||||||
|
self.subscription_manager.signal_stop()
|
||||||
try:
|
try:
|
||||||
self.httpd.socket.shutdown(SHUT_RDWR)
|
self.httpd.socket.shutdown(SHUT_RDWR)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
@ -184,6 +187,7 @@ class PlexCompanion(Thread):
|
||||||
request_mgr = httppersist.RequestMgr()
|
request_mgr = httppersist.RequestMgr()
|
||||||
subscription_manager = subscribers.SubscriptionMgr(
|
subscription_manager = subscribers.SubscriptionMgr(
|
||||||
request_mgr, self.player, self.mgr)
|
request_mgr, self.player, self.mgr)
|
||||||
|
self.subscription_manager = subscription_manager
|
||||||
queue = Queue(maxsize=100)
|
queue = Queue(maxsize=100)
|
||||||
self.queue = queue
|
self.queue = queue
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,16 @@ class SubscriptionMgr(object):
|
||||||
LOG.debug('msg is: %s', msg)
|
LOG.debug('msg is: %s', msg)
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
def signal_stop(self):
|
||||||
|
"""
|
||||||
|
Externally called on PKC shutdown to ensure that PKC signals a stop to
|
||||||
|
the PMS. Otherwise, PKC might be stuck at "currently playing"
|
||||||
|
"""
|
||||||
|
LOG.info('Signaling a complete stop to PMS')
|
||||||
|
for _, player in self.lastplayers.iteritems():
|
||||||
|
self.last_params['state'] = 'stopped'
|
||||||
|
self._send_pms_notification(player['playerid'], self.last_params)
|
||||||
|
|
||||||
def _get_container_key(self, playerid):
|
def _get_container_key(self, playerid):
|
||||||
key = None
|
key = None
|
||||||
playlistid = state.PLAYER_STATES[playerid]['playlistid']
|
playlistid = state.PLAYER_STATES[playerid]['playlistid']
|
||||||
|
@ -233,7 +243,7 @@ class SubscriptionMgr(object):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
# Process the players we have left (to signal a stop)
|
# Process the players we have left (to signal a stop)
|
||||||
for typus, player in self.lastplayers.iteritems():
|
for _, player in self.lastplayers.iteritems():
|
||||||
self.last_params['state'] = 'stopped'
|
self.last_params['state'] = 'stopped'
|
||||||
self._send_pms_notification(player['playerid'], self.last_params)
|
self._send_pms_notification(player['playerid'], self.last_params)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue