diff --git a/mopidy/frontends/mpd/__init__.py b/mopidy/frontends/mpd/__init__.py index e0ad28fc..37877386 100644 --- a/mopidy/frontends/mpd/__init__.py +++ b/mopidy/frontends/mpd/__init__.py @@ -5,7 +5,7 @@ from pykka.actor import ThreadingActor from mopidy import settings from mopidy.frontends.mpd import dispatcher, protocol -from mopidy.utils import network, process +from mopidy.utils import network, process, log logger = logging.getLogger('mopidy.frontends.mpd') @@ -54,10 +54,21 @@ class MpdSession(network.LineProtocol): self.dispatcher = dispatcher.MpdDispatcher(self) def on_start(self): + logger.info(u'New connection from [%s]:%s', self.host, self.port) self.send_lines([u'OK MPD %s' % protocol.VERSION]) def on_line_received(self, line): - self.send_lines(self.dispatcher.handle_request(line)) + logger.debug(u'Request from [%s]:%s to %s: %s', self.host, self.port, + self.actor_urn, line) + + response = self.dispatcher.handle_request(line) + if not response: + return + + logger.debug(u'Response to [%s]:%s from %s: %s', self.host, self.port, + self.actor_urn, log.indent(self.terminator.join(response))) + + self.send_lines(response) def close(self): self.stop() diff --git a/mopidy/utils/network.py b/mopidy/utils/network.py index 7233e65b..936aab41 100644 --- a/mopidy/utils/network.py +++ b/mopidy/utils/network.py @@ -60,9 +60,6 @@ class Server(object): self.register_server_socket(self.server_socket.fileno()) - logger.debug(u'Listening on [%s]:%s using %s as protocol handler', - host, port, self.protocol) - def create_server_socket(self, host, port): sock = create_socket() sock.setblocking(False) @@ -277,6 +274,14 @@ class LineProtocol(ThreadingActor): self.connection = connection self.recv_buffer = '' + @property + def host(self): + return self.connection.host + + @property + def port(self): + return self.connection.port + def on_line_received(self, line): """ Called whenever a new line is found. @@ -291,12 +296,10 @@ class LineProtocol(ThreadingActor): return self.connection.disable_timeout() - self.log_raw_data(message['received']) self.recv_buffer += message['received'] for line in self.parse_lines(): line = self.decode(line) - self.log_request(line) self.on_line_received(line) self.connection.enable_timeout() @@ -312,51 +315,6 @@ class LineProtocol(ThreadingActor): self.recv_buffer, 1) yield line - def log_raw_data(self, data): - """ - Log raw data from event loop for debug purposes. - - Can be overridden by subclasses to change logging behaviour. - """ - logger.debug(u'Got %s from event loop in %s', repr(data), - self.actor_urn) - - def log_request(self, request): - """ - Log request for debug purposes. - - Can be overridden by subclasses to change logging behaviour. - """ - logger.debug(u'Request from %s to %s: %s', self.connection, - self.actor_urn, indent(request)) - - def log_response(self, response): - """ - Log response for debug purposes. - - Can be overridden by subclasses to change logging behaviour. - """ - logger.debug(u'Response to %s from %s: %s', self.connection, - self.actor_urn, indent(response)) - - def log_error(self, error): - """ - Log error for debug purposes. - - Can be overridden by subclasses to change logging behaviour. - """ - logger.warning(u'Problem with connection to %s in %s: %s', - self.connection, self.actor_urn, error) - - def log_timeout(self): - """ - Log timeout for debug purposes. - - Can be overridden by subclasses to change logging behaviour. - """ - logger.debug(u'Closing connection to %s in %s due to timeout.', - self.connection, self.actor_urn) - def encode(self, line): """ Handle encoding of line. @@ -389,5 +347,4 @@ class LineProtocol(ThreadingActor): return data = self.join_lines(lines) - self.log_response(data) self.connection.send(self.encode(data)) diff --git a/tests/utils/network_test.py b/tests/utils/network_test.py index 5553af1a..369d3a44 100644 --- a/tests/utils/network_test.py +++ b/tests/utils/network_test.py @@ -837,3 +837,11 @@ class LineProtocolTest(unittest.TestCase): string.encode.side_effect = UnicodeError network.LineProtocol.encode(self.mock, string) + + @SkipTest + def test_host_property(self): + pass + + @SkipTest(self): + def test_port_property + pass