Implement 'kill'
This commit is contained in:
parent
d4399b43de
commit
9dcb2dcbfa
@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import re
|
||||
import sys
|
||||
|
||||
from mopidy import settings
|
||||
from mopidy.backends.dummy_backend import DummyBackend
|
||||
@ -55,7 +56,7 @@ class MpdHandler(object):
|
||||
|
||||
@register(r'^close$')
|
||||
def _close(self):
|
||||
self.session.close_when_done()
|
||||
self.session.do_close()
|
||||
|
||||
@register(r'^consume (?P<state>[01])$')
|
||||
def _consume(self, state):
|
||||
@ -88,7 +89,7 @@ class MpdHandler(object):
|
||||
|
||||
@register(r'^kill$')
|
||||
def _kill(self):
|
||||
pass # TODO
|
||||
self.session.do_kill()
|
||||
|
||||
@register(r'^listplaylist (?P<name>.+)$')
|
||||
def _listplaylist(self, name):
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import asyncore
|
||||
import logging
|
||||
import socket
|
||||
import sys
|
||||
|
||||
from mopidy import settings
|
||||
from mopidy.session import MpdSession
|
||||
@ -19,7 +20,13 @@ class MpdServer(asyncore.dispatcher):
|
||||
def handle_accept(self):
|
||||
(client_socket, client_address) = self.accept()
|
||||
logger.info(u'Connection from: [%s]:%s', *client_address)
|
||||
self.handler_class(client_socket, client_address)
|
||||
self.handler_class(self, client_socket, client_address)
|
||||
|
||||
def handle_close(self):
|
||||
self.close()
|
||||
|
||||
def do_kill(self):
|
||||
logger.info('Received "kill". Shutting down.')
|
||||
self.handle_close()
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
@ -7,17 +7,22 @@ from mopidy.handler import MpdHandler
|
||||
logger = logging.getLogger(u'session')
|
||||
|
||||
class MpdSession(asynchat.async_chat):
|
||||
def __init__(self, client_socket, client_address, handler=MpdHandler):
|
||||
def __init__(self, server, client_socket, client_address,
|
||||
handler=MpdHandler):
|
||||
asynchat.async_chat.__init__(self, sock=client_socket)
|
||||
self.server = server
|
||||
self.client_address = client_address
|
||||
self.input_buffer = []
|
||||
self.set_terminator(settings.MPD_LINE_TERMINATOR)
|
||||
self.handler = handler(session=self)
|
||||
self.send_response(u'OK MPD %s' % get_mpd_version())
|
||||
|
||||
def close_when_done(self):
|
||||
def do_close(self):
|
||||
logger.info(u'Closing connection with [%s]:%s', *self.client_address)
|
||||
asynchat.async_chat.close_when_done(self)
|
||||
self.close_when_done()
|
||||
|
||||
def do_kill(self):
|
||||
self.server.do_kill()
|
||||
|
||||
def collect_incoming_data(self, data):
|
||||
self.input_buffer.append(data)
|
||||
|
||||
@ -419,7 +419,10 @@ class StickersHandlerTest(unittest.TestCase):
|
||||
|
||||
|
||||
class DummySession(object):
|
||||
def close_when_done(self):
|
||||
def do_close(self):
|
||||
pass
|
||||
|
||||
def do_kill(self):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user