Implement 'close'
This commit is contained in:
parent
4f438a0738
commit
2d33a191d5
@ -20,7 +20,8 @@ def register(pattern):
|
||||
return decorator
|
||||
|
||||
class MpdHandler(object):
|
||||
def __init__(self, backend=DummyBackend):
|
||||
def __init__(self, session=None, backend=DummyBackend):
|
||||
self.session = session
|
||||
self.register_backend(backend())
|
||||
|
||||
def handle_request(self, request):
|
||||
@ -54,7 +55,7 @@ class MpdHandler(object):
|
||||
|
||||
@register(r'^close$')
|
||||
def _close(self):
|
||||
pass # TODO
|
||||
self.session.close_when_done()
|
||||
|
||||
@register(r'^consume (?P<state>[01])$')
|
||||
def _consume(self, state):
|
||||
|
||||
@ -9,16 +9,21 @@ logger = logging.getLogger(u'session')
|
||||
class MpdSession(asynchat.async_chat):
|
||||
def __init__(self, client_socket, client_address, handler=MpdHandler):
|
||||
asynchat.async_chat.__init__(self, sock=client_socket)
|
||||
self.client_address = client_address
|
||||
self.input_buffer = []
|
||||
self.set_terminator(settings.MPD_LINE_TERMINATOR)
|
||||
self.handler = handler()
|
||||
self.handler = handler(session=self)
|
||||
self.send_response(u'OK MPD %s' % get_mpd_version())
|
||||
|
||||
def close_when_done(self):
|
||||
logger.info(u'Closing connection with [%s]:%s', *self.client_address)
|
||||
asynchat.async_chat.close_when_done(self)
|
||||
|
||||
def collect_incoming_data(self, data):
|
||||
self.input_buffer.append(data)
|
||||
|
||||
def found_terminator(self):
|
||||
data = ''.join(self.input_buffer)
|
||||
data = ''.join(self.input_buffer).strip()
|
||||
self.input_buffer = []
|
||||
input = data.decode(settings.MPD_LINE_ENCODING)
|
||||
logger.debug(u'Input: %s', input)
|
||||
|
||||
@ -418,11 +418,17 @@ class StickersHandlerTest(unittest.TestCase):
|
||||
pass # TODO
|
||||
|
||||
|
||||
class DummySession(object):
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
|
||||
class ConnectionHandlerTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.h = handler.MpdHandler()
|
||||
|
||||
def test_close(self):
|
||||
self.h.session = DummySession()
|
||||
result = self.h.handle_request(u'close')
|
||||
self.assert_(result is None)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user